package com.xuan.qimen.core.zhuan.shijia;

import java.util.*;

/**
 * 常量集合
 */
public class ZhuanShiJiaQiMenMap extends ZhuanShiJiaQiMenConstant {

    /**
     * 地支
     * <p>十二时辰命名：夜半、鸡鸣、平旦、日出、早食、隅中、日中、日昳、晡时、日入、黄昏、人定</p>
     */
    public static final String[] DI_ZHI = {ZI_ZHI, CHOU_ZHI, YIN_ZHI, MAO_ZHI, CHEN_ZHI, SI_ZHI, WU_ZHI, WEI_ZHI, SHEN_ZHI, YOU_ZHI, XU_ZHI, HAI_ZHI};

    /**
     * 二十四小时对应十二地支
     */
    public static final Map<Integer, String> HOUR_ZHI = new HashMap<Integer, String>() {
        private static final long serialVersionUID = -1;

        {
            put(0, ZI_ZHI);    // 子
            put(1, CHOU_ZHI);  // 丑
            put(2, CHOU_ZHI);  // 丑
            put(3, YIN_ZHI);   // 寅
            put(4, YIN_ZHI);   // 寅
            put(5, MAO_ZHI);   // 卯
            put(6, MAO_ZHI);   // 卯
            put(7, CHEN_ZHI);  // 辰
            put(8, CHEN_ZHI);  // 辰
            put(9, SI_ZHI);    // 巳
            put(10, SI_ZHI);   // 巳
            put(11, WU_ZHI);   // 午
            put(12, WU_ZHI);   // 午
            put(13, WEI_ZHI);  // 未
            put(14, WEI_ZHI);  // 未
            put(15, SHEN_ZHI); // 申
            put(16, SHEN_ZHI); // 申
            put(17, YOU_ZHI);  // 酉
            put(18, YOU_ZHI);  // 酉
            put(19, XU_ZHI);   // 戌
            put(20, XU_ZHI);   // 戌
            put(21, HAI_ZHI);  // 亥
            put(22, HAI_ZHI);  // 亥
            put(23, ZI_ZHI);   // 子
        }

    };

    /**
     * 三元符头
     */
    public static final String[] SAN_YUAN_FU_TOU = {JIA_ZI, JIA_WU, JIA_YIN, JIA_SHEN, JIA_CHEN, JIA_XU, JI_MAO, JI_YOU, JI_SI, JI_HAI, JI_CHOU, JI_WEI};

    /**
     * 三元日柱
     */
    public static final Map<Integer, List<String>> SAN_YUAN_RI_ZHU = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put(0, Arrays.asList(JIA_ZI, JIA_WU, YI_CHOU, YI_WEI, BING_YIN, BING_SHEN, DING_MAO, DING_YOU, WU_CHEN, WU_XU, JI_MAO, JI_YOU, GENG_CHEN, GENG_XU, XIN_SI, XIN_HAI, REN_WU, REN_ZI, GUI_WEI, GUI_CHOU)); // 上元
            put(1, Arrays.asList(JIA_SHEN, JIA_YIN, YI_YOU, YI_MAO, BING_XU, BING_CEHN, DING_HAI, DING_SI, WU_ZI, WU_WU, JI_SI, JI_HAI, GENG_WU, GENG_ZI, XIN_WEI, XIN_CHOU, REN_SHEN, REN_YIN, GUI_YOU, GUI_MAO)); // 中元
            put(2, Arrays.asList(JIA_XU, JIA_CHEN, YI_HAI, YI_SI, BING_ZI, BING_WU, DING_CHOU, DING_WEI, WU_YIN, WU_SHEN, JI_CHOU, JI_WEI, GENG_YIN, GENG_SHEN, XIN_MAO, XIN_YOU, REN_CHEN, REN_XU, GUI_SI, GUI_HAI)); // 下元
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 二十四节气对应的阴阳遁
     */
    public static final Map<Integer, List<String>> YIN_YANG_DUN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put(0, Arrays.asList(DONG_ZHI, XIAO_HAN, DA_HAN, LI_CHUN, YU_SHUI, JING_ZHE, CHUN_FEN, QING_MING, GU_YU, LI_XIA, XIAO_MAN, MANG_ZHONG)); // 阳遁
            put(1, Arrays.asList(XIA_ZHI, XIAO_SHU, DA_SHU, LI_QIU, CHU_SHU, BAI_LU, QIU_FEN, HAN_LU, SHUANG_JIANG, LI_DONG, XIAO_XUE, DA_XUE)); // 阴遁
        }

    };

    /**
     * 二十四节气对应局数
     */
    public static final Map<String, List<Integer>> JU_SHU = new HashMap<String, List<Integer>>() {
        private static final long serialVersionUID = -1;

        /*
            阳遁：
                冬至、惊蛰一七四，小寒二八五，
                大寒、春分三九六，雨水九六三，
                清明、立夏四一七，立春八五二，
                谷雨、小满五二八，芒种六三九。

            阴遁：
                夏至、白露九三六，小暑八二五，
                大暑、秋分七一四，立秋二五八，
                寒露、立冬六九三，处暑一四七，
                霜降、小雪五八二，大雪四七一。
         */

        {
            put(DONG_ZHI, Arrays.asList(1, 7, 4));     // 冬至上元用阳遁1局，中元用阳遁7局，下元用阳遁4局
            put(XIAO_HAN, Arrays.asList(2, 8, 5));     // 小寒上元用阳遁2局，中元用阳遁8局，下元用阳遁5局
            put(DA_HAN, Arrays.asList(3, 9, 6));       // 大寒上元用阳遁3局，中元用阳遁9局，下元用阳遁6局
            put(LI_CHUN, Arrays.asList(8, 5, 2));      // 立春上元用阳遁8局，中元用阳遁5局，下元用阳遁2局
            put(YU_SHUI, Arrays.asList(9, 6, 3));      // 雨水上元用阳遁9局，中元用阳遁6局，下元用阳遁3局
            put(JING_ZHE, Arrays.asList(1, 7, 4));     // 惊蛰上元用阳遁1局，中元用阳遁7局，下元用阳遁4局
            put(CHUN_FEN, Arrays.asList(3, 9, 6));     // 春分上元用阳遁3局，中元用阳遁9局，下元用阳遁6局
            put(QING_MING, Arrays.asList(4, 1, 7));    // 清明上元用阳遁4局，中元用阳遁1局，下元用阳遁7局
            put(GU_YU, Arrays.asList(5, 2, 8));        // 谷雨上元用阳遁5局，中元用阳遁2局，下元用阳遁8局
            put(LI_XIA, Arrays.asList(4, 1, 7));       // 立夏上元用阳遁4局，中元用阳遁1局，下元用阳遁7局
            put(XIAO_MAN, Arrays.asList(5, 2, 8));     // 小满上元用阳遁5局，中元用阳遁2局，下元用阳遁8局
            put(MANG_ZHONG, Arrays.asList(6, 3, 9));   // 芒种上元用阳遁6局，中元用阳遁3局，下元用阳遁9局
            put(XIA_ZHI, Arrays.asList(9, 3, 6));      // 夏至上元用阴遁9局，中元用阴遁3局，下元用阴遁6局
            put(XIAO_SHU, Arrays.asList(8, 2, 5));     // 小暑上元用阴遁8局，中元用阴遁2局，下元用阴遁5局
            put(DA_SHU, Arrays.asList(7, 1, 4));       // 大暑上元用阴遁7局，中元用阴遁1局，下元用阴遁4局
            put(LI_QIU, Arrays.asList(2, 5, 8));       // 立秋上元用阴遁2局，中元用阴遁5局，下元用阴遁8局
            put(CHU_SHU, Arrays.asList(1, 4, 7));      // 处暑上元用阴遁1局，中元用阴遁4局，下元用阴遁7局
            put(BAI_LU, Arrays.asList(9, 3, 6));       // 白露上元用阴遁9局，中元用阴遁3局，下元用阴遁6局
            put(QIU_FEN, Arrays.asList(7, 1, 4));      // 秋分上元用阴遁7局，中元用阴遁1局，下元用阴遁4局
            put(HAN_LU, Arrays.asList(6, 9, 3));       // 寒露上元用阴遁6局，中元用阴遁9局，下元用阴遁3局
            put(SHUANG_JIANG, Arrays.asList(5, 8, 2)); // 霜降上元用阴遁5局，中元用阴遁8局，下元用阴遁2局
            put(LI_DONG, Arrays.asList(6, 9, 3));      // 立冬上元用阴遁6局，中元用阴遁9局，下元用阴遁3局
            put(XIAO_XUE, Arrays.asList(5, 8, 2));     // 小雪上元用阴遁5局，中元用阴遁8局，下元用阴遁2局
            put(DA_XUE, Arrays.asList(4, 7, 1));       // 大雪上元用阴遁4局，中元用阴遁7局，下元用阴遁1局
        }

    };

    /**
     * 根据二十四节气获取八门
     */
    public static final Map<Integer, List<String>> IS_BA_MEN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put(0, Arrays.asList("冬至", "小寒", "大寒")); // 休门
            put(1, Arrays.asList("立春", "雨水", "惊蛰")); // 生门
            put(2, Arrays.asList("春分", "清明", "谷雨")); // 伤门
            put(3, Arrays.asList("立夏", "小满", "芒种")); // 杜门
            put(4, Arrays.asList("夏至", "小暑", "大暑")); // 景门
            put(5, Arrays.asList("立秋", "处暑", "白露")); // 死门
            put(6, Arrays.asList("秋分", "寒露", "霜降")); // 惊门
            put(7, Arrays.asList("立冬", "小雪", "大雪")); // 开门
        }
    };

    /**
     * 六十甲子对应的旬首
     */
    public static final Map<String, List<String>> SIX_JIA_ZI_XUN_SHOU = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put(JIA_ZI, Arrays.asList(JIA_ZI, WU_GAN));       // 甲子：甲子（戊）
            put(JIA_XU, Arrays.asList(JIA_XU, JI_GAN));       // 甲戌：甲戌（己）
            put(JIA_SHEN, Arrays.asList(JIA_SHEN, GENG_GAN)); // 甲申：甲申（庚）
            put(JIA_WU, Arrays.asList(JIA_WU, XIN_GAN));      // 甲午：甲午（辛）
            put(JIA_CHEN, Arrays.asList(JIA_CHEN, REN_GAN));  // 甲辰：甲辰（壬）
            put(JIA_YIN, Arrays.asList(JIA_YIN, GUI_GAN));    // 甲寅：甲寅（癸）
            put(YI_CHOU, Arrays.asList(JIA_ZI, WU_GAN));      // 乙丑：甲子（戊）
            put(YI_HAI, Arrays.asList(JIA_XU, JI_GAN));       // 乙亥：甲戌（己）
            put(YI_YOU, Arrays.asList(JIA_SHEN, GENG_GAN));   // 乙酉：甲申（庚）
            put(YI_WEI, Arrays.asList(JIA_WU, XIN_GAN));      // 乙未：甲午（辛）
            put(YI_SI, Arrays.asList(JIA_CHEN, REN_GAN));     // 乙巳：甲辰（壬）
            put(YI_MAO, Arrays.asList(JIA_YIN, GUI_GAN));     // 乙卯：甲寅（癸）
            put(BING_YIN, Arrays.asList(JIA_ZI, WU_GAN));     // 丙寅：甲子（戊）
            put(BING_ZI, Arrays.asList(JIA_XU, JI_GAN));      // 丙子：甲戌（己）
            put(BING_XU, Arrays.asList(JIA_SHEN, GENG_GAN));  // 丙戌：甲申（庚）
            put(BING_SHEN, Arrays.asList(JIA_WU, XIN_GAN));   // 丙申：甲午（辛）
            put(BING_WU, Arrays.asList(JIA_CHEN, REN_GAN));   // 丙午：甲辰（壬）
            put(BING_CEHN, Arrays.asList(JIA_YIN, GUI_GAN));  // 丙辰：甲寅（癸）
            put(DING_MAO, Arrays.asList(JIA_ZI, WU_GAN));     // 丁卯：甲子（戊）
            put(DING_CHOU, Arrays.asList(JIA_XU, JI_GAN));    // 丁丑：甲戌（己）
            put(DING_HAI, Arrays.asList(JIA_SHEN, GENG_GAN)); // 丁亥：甲申（庚）
            put(DING_YOU, Arrays.asList(JIA_WU, XIN_GAN));    // 丁酉：甲午（辛）
            put(DING_WEI, Arrays.asList(JIA_CHEN, REN_GAN));  // 丁未：甲辰（壬）
            put(DING_SI, Arrays.asList(JIA_YIN, GUI_GAN));    // 丁巳：甲寅（癸）
            put(WU_CHEN, Arrays.asList(JIA_ZI, WU_GAN));      // 戊辰：甲子（戊）
            put(WU_YIN, Arrays.asList(JIA_XU, JI_GAN));       // 戊寅：甲戌（己）
            put(WU_ZI, Arrays.asList(JIA_SHEN, GENG_GAN));    // 戊子：甲申（庚）
            put(WU_XU, Arrays.asList(JIA_WU, XIN_GAN));       // 戊戌：甲午（辛）
            put(WU_SHEN, Arrays.asList(JIA_CHEN, REN_GAN));   // 戊申：甲辰（壬）
            put(WU_WU, Arrays.asList(JIA_YIN, GUI_GAN));      // 戊午：甲寅（癸）
            put(JI_SI, Arrays.asList(JIA_ZI, WU_GAN));        // 己巳：甲子（戊）
            put(JI_MAO, Arrays.asList(JIA_XU, JI_GAN));       // 己卯：甲戌（己）
            put(JI_CHOU, Arrays.asList(JIA_SHEN, GENG_GAN));  // 己丑：甲申（庚）
            put(JI_HAI, Arrays.asList(JIA_WU, XIN_GAN));      // 己亥：甲午（辛）
            put(JI_YOU, Arrays.asList(JIA_CHEN, REN_GAN));    // 己酉：甲辰（壬）
            put(JI_WEI, Arrays.asList(JIA_YIN, GUI_GAN));     // 己未：甲寅（癸）
            put(GENG_WU, Arrays.asList(JIA_ZI, WU_GAN));      // 庚午：甲子（戊）
            put(GENG_CHEN, Arrays.asList(JIA_XU, JI_GAN));    // 庚辰：甲戌（己）
            put(GENG_YIN, Arrays.asList(JIA_SHEN, GENG_GAN)); // 庚寅：甲申（庚）
            put(GENG_ZI, Arrays.asList(JIA_WU, XIN_GAN));     // 庚子：甲午（辛）
            put(GENG_XU, Arrays.asList(JIA_CHEN, REN_GAN));   // 庚戌：甲辰（壬）
            put(GENG_SHEN, Arrays.asList(JIA_YIN, GUI_GAN));  // 庚申：甲寅（癸）
            put(XIN_WEI, Arrays.asList(JIA_ZI, WU_GAN));      // 辛未：甲子（戊）
            put(XIN_SI, Arrays.asList(JIA_XU, JI_GAN));       // 辛巳：甲戌（己）
            put(XIN_MAO, Arrays.asList(JIA_SHEN, GENG_GAN));  // 辛卯：甲申（庚）
            put(XIN_CHOU, Arrays.asList(JIA_WU, XIN_GAN));    // 辛丑：甲午（辛）
            put(XIN_HAI, Arrays.asList(JIA_CHEN, REN_GAN));   // 辛亥：甲辰（壬）
            put(XIN_YOU, Arrays.asList(JIA_YIN, GUI_GAN));    // 辛酉：甲寅（癸）
            put(REN_SHEN, Arrays.asList(JIA_ZI, WU_GAN));     // 壬申：甲子（戊）
            put(REN_WU, Arrays.asList(JIA_XU, JI_GAN));       // 壬午：甲戌（己）
            put(REN_CHEN, Arrays.asList(JIA_SHEN, GENG_GAN)); // 壬辰：甲申（庚）
            put(REN_YIN, Arrays.asList(JIA_WU, XIN_GAN));     // 壬寅：甲午（辛）
            put(REN_ZI, Arrays.asList(JIA_CHEN, REN_GAN));    // 壬子：甲辰（壬）
            put(REN_XU, Arrays.asList(JIA_YIN, GUI_GAN));     // 壬戌：甲寅（癸）
            put(GUI_YOU, Arrays.asList(JIA_ZI, WU_GAN));      // 癸酉：甲子（戊）
            put(GUI_WEI, Arrays.asList(JIA_XU, JI_GAN));      // 癸未：甲戌（己）
            put(GUI_SI, Arrays.asList(JIA_SHEN, GENG_GAN));   // 癸巳：甲申（庚）
            put(GUI_MAO, Arrays.asList(JIA_WU, XIN_GAN));     // 癸卯：甲午（辛）
            put(GUI_CHOU, Arrays.asList(JIA_CHEN, REN_GAN));  // 癸丑：甲辰（壬）
            put(GUI_HAI, Arrays.asList(JIA_YIN, GUI_GAN));    // 癸亥：甲寅（癸）
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 地盘三奇六仪（阳遁1~9宫）
     */
    public static final Map<Integer, List<String>> DI_YANG_QI_YI = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        // 例如→ 阳遁一局：戊在坎一宫，己在坤二宫，庚在震三宫，辛在巽四宫，壬在中五宫、寄坤二宫，癸在乾六宫，丁在兑七宫，丙在艮八宫，乙在离九宫。
        {
            put(1, Arrays.asList(WU_GAN, JI_GAN, GENG_GAN, XIN_GAN, REN_GAN, GUI_GAN, DING_GAN, BING_GAN, YI_GAN)); // 阳遁一局（1~9宫）
            put(2, Arrays.asList(YI_GAN, WU_GAN, JI_GAN, GENG_GAN, XIN_GAN, REN_GAN, GUI_GAN, DING_GAN, BING_GAN)); // 阳遁二局（1~9宫）
            put(3, Arrays.asList(BING_GAN, YI_GAN, WU_GAN, JI_GAN, GENG_GAN, XIN_GAN, REN_GAN, GUI_GAN, DING_GAN)); // 阳遁三局（1~9宫）
            put(4, Arrays.asList(DING_GAN, BING_GAN, YI_GAN, WU_GAN, JI_GAN, GENG_GAN, XIN_GAN, REN_GAN, GUI_GAN)); // 阳遁四局（1~9宫）
            put(5, Arrays.asList(GUI_GAN, DING_GAN, BING_GAN, YI_GAN, WU_GAN, JI_GAN, GENG_GAN, XIN_GAN, REN_GAN)); // 阳遁五局（1~9宫）
            put(6, Arrays.asList(REN_GAN, GUI_GAN, DING_GAN, BING_GAN, YI_GAN, WU_GAN, JI_GAN, GENG_GAN, XIN_GAN)); // 阳遁六局（1~9宫）
            put(7, Arrays.asList(XIN_GAN, REN_GAN, GUI_GAN, DING_GAN, BING_GAN, YI_GAN, WU_GAN, JI_GAN, GENG_GAN)); // 阳遁七局（1~9宫）
            put(8, Arrays.asList(GENG_GAN, XIN_GAN, REN_GAN, GUI_GAN, DING_GAN, BING_GAN, YI_GAN, WU_GAN, JI_GAN)); // 阳遁八局（1~9宫）
            put(9, Arrays.asList("己", GENG_GAN, XIN_GAN, REN_GAN, GUI_GAN, DING_GAN, BING_GAN, YI_GAN, WU_GAN)); // 阳遁九局（1~9宫）
        }

    };

    /**
     * 地盘三奇六仪（阴遁1~9宫）
     */
    public static final Map<Integer, List<String>> DI_YIN_QI_YI = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        // 例如→ 阴遁一局：戊在坎一宫，乙在坤二宫，丙在震三宫，丁在巽四宫，癸在中五宫、坤二宫，壬在乾六宫，辛在兑七宫，庚在艮八宫，己在离九宫。
        {
            put(1, Arrays.asList(WU_GAN, YI_GAN, BING_GAN, DING_GAN, GUI_GAN, REN_GAN, XIN_GAN, GENG_GAN, JI_GAN)); // 阴遁一局（1~9宫）
            put(2, Arrays.asList(JI_GAN, WU_GAN, YI_GAN, BING_GAN, DING_GAN, GUI_GAN, REN_GAN, XIN_GAN, GENG_GAN)); // 阴遁二局（1~9宫）
            put(3, Arrays.asList(GENG_GAN, JI_GAN, WU_GAN, YI_GAN, BING_GAN, DING_GAN, GUI_GAN, REN_GAN, XIN_GAN)); // 阴遁三局（1~9宫）
            put(4, Arrays.asList(XIN_GAN, GENG_GAN, JI_GAN, WU_GAN, YI_GAN, BING_GAN, DING_GAN, GUI_GAN, REN_GAN)); // 阴遁四局（1~9宫）
            put(5, Arrays.asList(REN_GAN, XIN_GAN, GENG_GAN, JI_GAN, WU_GAN, YI_GAN, BING_GAN, DING_GAN, GUI_GAN)); // 阴遁五局（1~9宫）
            put(6, Arrays.asList(GUI_GAN, REN_GAN, XIN_GAN, GENG_GAN, JI_GAN, WU_GAN, YI_GAN, BING_GAN, DING_GAN)); // 阴遁六局（1~9宫）
            put(7, Arrays.asList(DING_GAN, GUI_GAN, REN_GAN, XIN_GAN, GENG_GAN, JI_GAN, WU_GAN, YI_GAN, BING_GAN)); // 阴遁七局（1~9宫）
            put(8, Arrays.asList(BING_GAN, DING_GAN, GUI_GAN, REN_GAN, XIN_GAN, GENG_GAN, JI_GAN, WU_GAN, YI_GAN)); // 阴遁八局（1~9宫）
            put(9, Arrays.asList(YI_GAN, BING_GAN, DING_GAN, GUI_GAN, REN_GAN, XIN_GAN, GENG_GAN, JI_GAN, WU_GAN)); // 阴遁九局（1~9宫）
        }

    };

    /**
     * 地盘六甲隐位（阳遁1~9宫）
     */
    public static final Map<Integer, List<String>> DI_YANG_LIU_JIA = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        // 例如→ 阳遁一局：甲子隐在坎一宫，甲戌隐在坤二宫，甲申隐在震三宫，甲午隐在巽四宫，甲辰隐在中五宫、寄坤二宫，甲寅隐在乾六宫。
        {
            put(1, Arrays.asList(JIA_ZI, JIA_XU, JIA_SHEN, JIA_WU, JIA_CHEN, JIA_YIN, "", "", "")); // 阳遁一局（1~9宫）
            put(2, Arrays.asList("", JIA_ZI, JIA_XU, JIA_SHEN, JIA_WU, JIA_CHEN, JIA_YIN, "", "")); // 阳遁二局（1~9宫）
            put(3, Arrays.asList("", "", JIA_ZI, JIA_XU, JIA_SHEN, JIA_WU, JIA_CHEN, JIA_YIN, "")); // 阳遁三局（1~9宫）
            put(4, Arrays.asList("", "", "", JIA_ZI, JIA_XU, JIA_SHEN, JIA_WU, JIA_CHEN, JIA_YIN)); // 阳遁四局（1~9宫）
            put(5, Arrays.asList(JIA_YIN, "", "", "", JIA_ZI, JIA_XU, JIA_SHEN, JIA_WU, JIA_CHEN)); // 阳遁五局（1~9宫）
            put(6, Arrays.asList(JIA_CHEN, JIA_YIN, "", "", "", JIA_ZI, JIA_XU, JIA_SHEN, JIA_WU)); // 阳遁六局（1~9宫）
            put(7, Arrays.asList(JIA_WU, JIA_CHEN, JIA_YIN, "", "", "", JIA_ZI, JIA_XU, JIA_SHEN)); // 阳遁七局（1~9宫）
            put(8, Arrays.asList(JIA_SHEN, JIA_WU, JIA_CHEN, JIA_YIN, "", "", "", JIA_ZI, JIA_XU)); // 阳遁八局（1~9宫）
            put(9, Arrays.asList(JIA_XU, JIA_SHEN, JIA_WU, JIA_CHEN, JIA_YIN, "", "", "", JIA_ZI)); // 阳遁九局（1~9宫）
        }

    };

    /**
     * 地盘六甲隐位（阴遁1~9宫）
     */
    public static final Map<Integer, List<String>> DI_YIN_LIU_JIA = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        // 例如→ 阴遁一局：甲子隐在坎一宫，甲戌隐在离九宫，甲申隐在艮八宫，甲午隐在兑七宫，甲辰隐在乾六宫，甲寅隐在中五宫、寄坤二宫。
        {
            put(1, Arrays.asList(JIA_ZI, "", "", "", JIA_YIN, JIA_CHEN, JIA_WU, JIA_SHEN, JIA_XU)); // 阴遁一局（1~9宫）
            put(2, Arrays.asList(JIA_XU, JIA_ZI, "", "", "", JIA_YIN, JIA_CHEN, JIA_WU, JIA_SHEN)); // 阴遁二局（1~9宫）
            put(3, Arrays.asList(JIA_SHEN, JIA_XU, JIA_ZI, "", "", "", JIA_YIN, JIA_CHEN, JIA_WU)); // 阴遁三局（1~9宫）
            put(4, Arrays.asList(JIA_WU, JIA_SHEN, JIA_XU, JIA_ZI, "", "", "", JIA_YIN, JIA_CHEN)); // 阴遁四局（1~9宫）
            put(5, Arrays.asList(JIA_CHEN, JIA_WU, JIA_SHEN, JIA_XU, JIA_ZI, "", "", "", JIA_YIN)); // 阴遁五局（1~9宫）
            put(6, Arrays.asList(JIA_YIN, JIA_CHEN, JIA_WU, JIA_SHEN, JIA_XU, JIA_ZI, "", "", "")); // 阴遁六局（1~9宫）
            put(7, Arrays.asList("", JIA_YIN, JIA_CHEN, JIA_WU, JIA_SHEN, JIA_XU, JIA_ZI, "", "")); // 阴遁七局（1~9宫）
            put(8, Arrays.asList("", "", JIA_YIN, JIA_CHEN, JIA_WU, JIA_SHEN, JIA_XU, JIA_ZI, "")); // 阴遁八局（1~9宫）
            put(9, Arrays.asList("", "", "", JIA_YIN, JIA_CHEN, JIA_WU, JIA_SHEN, JIA_XU, JIA_ZI)); // 阴遁九局（1~9宫）
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 九星原始宫位（1~9宫）
     */
    public static final String[] JIU_XING_INITIAL = {TIAN_PENG, TIAN_RUI, TIAN_CHONG, TIAN_FU, TIAN_QIN, TIAN_XIN, TIAN_ZHU, TIAN_REN, TIAN_YING};

    /**
     * 九星原始宫位（1~9宫）
     */
    public static final Map<String, Integer> JIU_XING_INITIAL2 = new HashMap<String, Integer>() {
        private static final long serialVersionUID = -1;

        {
            put(TIAN_PENG, 1);  // 天蓬：坎一宫
            put(TIAN_RUI, 2);   // 天芮：坤二宫
            put(TIAN_CHONG, 3); // 天冲：震三宫
            put(TIAN_FU, 4);    // 天辅：巽四宫
            put(TIAN_QIN, 5);   // 天禽：中五宫（转盘奇门需寄二宫）
            put(TIAN_XIN, 6);   // 天心：乾六宫
            put(TIAN_ZHU, 7);   // 天柱：兑七宫
            put(TIAN_REN, 8);   // 天任：艮八宫
            put(TIAN_YING, 9);  // 天英：离九宫
        }

    };

    /**
     * 九星位置（顺转九宫）
     */
    public static final Map<Integer, List<String>> JIU_XING_SHUN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        /* 以[天蓬星]为基准 */

        {
            put(0, Arrays.asList(TIAN_PENG, TIAN_RUI, TIAN_CHONG, TIAN_FU, "", TIAN_XIN, TIAN_ZHU, TIAN_REN, TIAN_YING)); // 天蓬星落坎一宫
            put(1, Arrays.asList(TIAN_FU, TIAN_PENG, TIAN_RUI, TIAN_ZHU, "", TIAN_CHONG, TIAN_REN, TIAN_YING, TIAN_XIN)); // 天蓬星落坤二宫
            put(2, Arrays.asList(TIAN_ZHU, TIAN_FU, TIAN_PENG, TIAN_REN, "", TIAN_RUI, TIAN_YING, TIAN_XIN, TIAN_CHONG)); // 天蓬星落朕三宫
            put(3, Arrays.asList(TIAN_RUI, TIAN_CHONG, TIAN_XIN, TIAN_PENG, "", TIAN_YING, TIAN_FU, TIAN_ZHU, TIAN_REN)); // 天蓬星落巽四宫
            put(4, Arrays.asList(TIAN_REN, TIAN_ZHU, TIAN_FU, TIAN_YING, "", TIAN_PENG, TIAN_XIN, TIAN_CHONG, TIAN_RUI)); // 天蓬星落乾六宫
            put(5, Arrays.asList(TIAN_CHONG, TIAN_XIN, TIAN_YING, TIAN_RUI, "", TIAN_REN, TIAN_PENG, TIAN_FU, TIAN_ZHU)); // 天蓬星落兑七宫
            put(6, Arrays.asList(TIAN_XIN, TIAN_YING, TIAN_REN, TIAN_CHONG, "", TIAN_ZHU, TIAN_RUI, TIAN_PENG, TIAN_FU)); // 天蓬星落艮八宫
            put(7, Arrays.asList(TIAN_YING, TIAN_REN, TIAN_ZHU, TIAN_XIN, "", TIAN_FU, TIAN_CHONG, TIAN_RUI, TIAN_PENG)); // 天蓬星落离九宫
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 八门原始宫位（1~9宫）
     */
    public static final String[] BA_MEN_INITIAL = {XIU_MEN, SI_MEN, SHANG_MEN, DU_MEN, "", KAI_MEN, JING_MEN_2, SHENG_MEN, JING_MEN_1};

    /**
     * 八门位置（顺转九宫）
     */
    public static final Map<Integer, List<String>> BA_MEN_SHUN_ZHUAN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        /* 以[休门]为基准 */

        {
            // 1~9宫
            put(0, Arrays.asList(XIU_MEN, SI_MEN, SHANG_MEN, DU_MEN, "", KAI_MEN, JING_MEN_2, SHENG_MEN, JING_MEN_1)); // 休门落坎一宫
            put(1, Arrays.asList(DU_MEN, XIU_MEN, SI_MEN, JING_MEN_2, "", SHANG_MEN, SHENG_MEN, JING_MEN_1, KAI_MEN)); // 休门落坤二宫
            put(2, Arrays.asList(JING_MEN_2, DU_MEN, XIU_MEN, SHENG_MEN, "", SI_MEN, JING_MEN_1, KAI_MEN, SHANG_MEN)); // 休门落震三宫
            put(3, Arrays.asList(SI_MEN, SHANG_MEN, KAI_MEN, XIU_MEN, "", JING_MEN_1, DU_MEN, JING_MEN_2, SHENG_MEN)); // 休门落巽四宫
            put(4, Arrays.asList(DU_MEN, XIU_MEN, SI_MEN, JING_MEN_2, "", SHANG_MEN, SHENG_MEN, JING_MEN_1, KAI_MEN)); // 休门落中五宫（按坤二宫计算）
            put(5, Arrays.asList(SHENG_MEN, JING_MEN_2, DU_MEN, JING_MEN_1, "", XIU_MEN, KAI_MEN, SHANG_MEN, SI_MEN)); // 休门落乾六宫
            put(6, Arrays.asList(SHANG_MEN, KAI_MEN, JING_MEN_1, SI_MEN, "", SHENG_MEN, XIU_MEN, DU_MEN, JING_MEN_2)); // 休门落兑七宫
            put(7, Arrays.asList(KAI_MEN, JING_MEN_1, SHENG_MEN, SHANG_MEN, "", JING_MEN_2, SI_MEN, XIU_MEN, DU_MEN)); // 休门落艮八宫
            put(8, Arrays.asList(JING_MEN_1, SHENG_MEN, JING_MEN_2, KAI_MEN, "", DU_MEN, SHANG_MEN, SI_MEN, XIU_MEN)); // 休门落离九宫
        }

    };

    /**
     * 八门位置（逆转九宫）
     */
    public static final Map<Integer, List<String>> BA_MEN_NI_ZHUAN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        /* 以[休门]为基准 */

        {
            // 1~9宫
            put(0, Arrays.asList(XIU_MEN, DU_MEN, JING_MEN_2, SI_MEN, "", SHENG_MEN, SHANG_MEN, KAI_MEN, JING_MEN_1)); // 休门落坎一宫
            put(1, Arrays.asList(SI_MEN, XIU_MEN, DU_MEN, SHANG_MEN, "", JING_MEN_2, KAI_MEN, JING_MEN_1, XIU_MEN)); // 休门落坤二宫
            put(2, Arrays.asList(SHANG_MEN, SI_MEN, XIU_MEN, KAI_MEN, "", DU_MEN, JING_MEN_1, SHENG_MEN, JING_MEN_2)); // 休门落震三宫
            put(3, Arrays.asList(DU_MEN, JING_MEN_2, SHENG_MEN, XIU_MEN, "", JING_MEN_1, SI_MEN, SHANG_MEN, KAI_MEN)); // 休门落巽四宫
            put(4, Arrays.asList(SI_MEN, XIU_MEN, DU_MEN, SHANG_MEN, "", JING_MEN_2, KAI_MEN, JING_MEN_1, XIU_MEN)); // 休门落中五宫（按坤二宫计算）
            put(5, Arrays.asList(KAI_MEN, SHANG_MEN, SI_MEN, JING_MEN_1, "", XIU_MEN, SHENG_MEN, JING_MEN_2, DU_MEN)); // 休门落乾六宫
            put(6, Arrays.asList(JING_MEN_2, SHENG_MEN, JING_MEN_1, DU_MEN, "", KAI_MEN, XIU_MEN, SI_MEN, SHANG_MEN)); // 休门落兑七宫
            put(7, Arrays.asList(SHENG_MEN, JING_MEN_1, KAI_MEN, JING_MEN_2, "", SHANG_MEN, DU_MEN, XIU_MEN, SI_MEN)); // 休门落艮八宫
            put(8, Arrays.asList(JING_MEN_1, KAI_MEN, SHANG_MEN, SHENG_MEN, "", SI_MEN, JING_MEN_2, DU_MEN, XIU_MEN)); // 休门落离九宫
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 八神位置（顺转九宫）
     */
    public static final Map<Integer, List<String>> BA_SHEN_SHUN_ZHUAN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put(1, Arrays.asList(ZHI_FU, XUAN_WU, TAI_YIN, LIU_HE, "", JIU_TIAN, JIU_DI, TENG_SHE, BAI_HU)); // 大值符旋转后落一宫
            put(2, Arrays.asList(LIU_HE, ZHI_FU, XUAN_WU, JIU_DI, "", TAI_YIN, TENG_SHE, BAI_HU, JIU_TIAN)); // 大值符旋转后落二宫
            put(3, Arrays.asList(JIU_DI, LIU_HE, ZHI_FU, TENG_SHE, "", XUAN_WU, BAI_HU, JIU_TIAN, TAI_YIN)); // 大值符旋转后落三宫
            put(4, Arrays.asList(XUAN_WU, TAI_YIN, JIU_TIAN, ZHI_FU, "", BAI_HU, LIU_HE, JIU_DI, TENG_SHE)); // 大值符旋转后落四宫
            put(5, Arrays.asList(LIU_HE, ZHI_FU, XUAN_WU, JIU_DI, "", TAI_YIN, TENG_SHE, BAI_HU, JIU_TIAN)); // 五宫寄二宫
            put(6, Arrays.asList(TENG_SHE, JIU_DI, LIU_HE, BAI_HU, "", ZHI_FU, JIU_TIAN, TAI_YIN, XUAN_WU)); // 大值符旋转后落六宫
            put(7, Arrays.asList(TAI_YIN, JIU_TIAN, BAI_HU, XUAN_WU, "", TENG_SHE, ZHI_FU, LIU_HE, JIU_DI)); // 大值符旋转后落七宫
            put(8, Arrays.asList(JIU_TIAN, BAI_HU, TENG_SHE, TAI_YIN, "", JIU_DI, XUAN_WU, ZHI_FU, LIU_HE)); // 大值符旋转后落八宫
            put(9, Arrays.asList(BAI_HU, TENG_SHE, JIU_DI, JIU_TIAN, "", LIU_HE, TAI_YIN, XUAN_WU, ZHI_FU)); // 大值符旋转后落九宫
        }

    };

    /**
     * 八神位置（逆转九宫）
     */
    public static final Map<Integer, List<String>> BA_SHEN_NI_ZHUAN = new HashMap<Integer, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put(1, Arrays.asList(ZHI_FU, LIU_HE, JIU_DI, XUAN_WU, "", TENG_SHE, TAI_YIN, JIU_TIAN, BAI_HU)); // 大值符旋转后落一宫
            put(2, Arrays.asList(XUAN_WU, ZHI_FU, LIU_HE, TAI_YIN, "", JIU_DI, JIU_TIAN, BAI_HU, TENG_SHE)); // 大值符旋转后落二宫
            put(3, Arrays.asList(TAI_YIN, XUAN_WU, ZHI_FU, JIU_TIAN, "", LIU_HE, BAI_HU, TENG_SHE, JIU_DI)); // 大值符旋转后落三宫
            put(4, Arrays.asList(LIU_HE, JIU_DI, TENG_SHE, ZHI_FU, "", BAI_HU, XUAN_WU, TAI_YIN, JIU_TIAN)); // 大值符旋转后落四宫
            put(5, Arrays.asList(XUAN_WU, ZHI_FU, LIU_HE, TAI_YIN, "", JIU_DI, JIU_TIAN, BAI_HU, TENG_SHE)); // 五宫寄二宫
            put(6, Arrays.asList(JIU_TIAN, TAI_YIN, XUAN_WU, BAI_HU, "", ZHI_FU, TENG_SHE, JIU_DI, LIU_HE)); // 大值符旋转后落六宫
            put(7, Arrays.asList(JIU_DI, TENG_SHE, BAI_HU, LIU_HE, "", JIU_TIAN, ZHI_FU, XUAN_WU, TAI_YIN)); // 大值符旋转后落七宫
            put(8, Arrays.asList(TENG_SHE, BAI_HU, JIU_TIAN, JIU_DI, "", TAI_YIN, LIU_HE, ZHI_FU, XUAN_WU)); // 大值符旋转后落八宫
            put(9, Arrays.asList(BAI_HU, JIU_TIAN, TAI_YIN, TENG_SHE, "", XUAN_WU, JIU_DI, LIU_HE, ZHI_FU)); // 大值符旋转后落九宫
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 六甲旬空
     */
    public static final Map<String, List<String>> LIU_JIA_XUN_KONG = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            甲子旬戌亥空，甲戌旬申酉空；
            甲申旬午未空，甲午旬辰巳空；
            甲辰旬寅卯空，甲寅旬子丑空。

            ★注：忌神落空则为喜、喜神落空则为凶

         */

        {
            put(JIA_ZI, Arrays.asList(XU_ZHI, HAI_ZHI));   // 甲子旬：戌亥空
            put(JIA_XU, Arrays.asList(SHEN_ZHI, YOU_ZHI)); // 甲戌旬：申酉空
            put(JIA_SHEN, Arrays.asList(WU_ZHI, WEI_ZHI));   // 甲申旬：午未空
            put(JIA_WU, Arrays.asList(CHEN_ZHI, SI_ZHI));  // 甲午旬：辰巳空
            put(JIA_CHEN, Arrays.asList(YIN_ZHI, MAO_ZHI));  // 甲辰旬：寅卯空
            put(JIA_YIN, Arrays.asList(ZI_ZHI, CHOU_ZHI));  // 甲寅旬：子丑空
        }

    };

    /**
     * 六甲旬空落宫
     */
    public static final Map<List<String>, List<Integer>> LIU_JIA_XUN_KONG_GONG = new HashMap<List<String>, List<Integer>>() {
        private static final long serialVersionUID = -1;

        {
            put(Arrays.asList(XU_ZHI, HAI_ZHI), Collections.singletonList(6));  // 戌亥空：落乾六宫
            put(Arrays.asList(SHEN_ZHI, YOU_ZHI), Arrays.asList(2, 7));         // 申酉空：落坤二宫、兑七宫
            put(Arrays.asList(WU_ZHI, WEI_ZHI), Arrays.asList(9, 2));           // 午未空：落离九宫、坤二宫
            put(Arrays.asList(CHEN_ZHI, SI_ZHI), Collections.singletonList(4)); // 辰巳空：落巽四宫
            put(Arrays.asList(YIN_ZHI, MAO_ZHI), Arrays.asList(8, 3));          // 寅卯空：落艮八宫、震三宫
            put(Arrays.asList(ZI_ZHI, CHOU_ZHI), Arrays.asList(1, 8));          // 子丑空：落坎一宫、艮八宫
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 驿马
     */
    public static final Map<String, String> YI_MA = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        /*
            根据时支判断→ 申子辰马在寅，寅午戌马在申，巳酉丑马在亥，亥卯未马在巳
         */

        {
            put(SHEN_ZHI, YIN_ZHI); // 申：马在寅
            put(ZI_ZHI, YIN_ZHI);   // 子：马在寅
            put(CHEN_ZHI, YIN_ZHI); // 辰：马在寅
            put(YIN_ZHI, SHEN_ZHI); // 寅：马在申
            put(WU_ZHI, SHEN_ZHI);  // 午：马在申
            put(XU_ZHI, SHEN_ZHI);  // 戌：马在申
            put(SI_ZHI, HAI_ZHI);   // 巳：马在亥
            put(YOU_ZHI, HAI_ZHI);  // 酉：马在亥
            put(CHOU_ZHI, HAI_ZHI); // 丑：马在亥
            put(HAI_ZHI, SI_ZHI);   // 亥：马在巳
            put(MAO_ZHI, SI_ZHI);   // 卯：马在巳
            put(WEI_ZHI, SI_ZHI);   // 未：马在巳
        }

    };

    /**
     * 驿马落宫
     */
    public static final Map<String, Integer> YI_MA_GONG = new HashMap<String, Integer>() {
        private static final long serialVersionUID = -1;

        /*
            根据时支判断→ 寅马在艮八宫，申马在坤二宫，巳马在巽四宫，亥马在乾六宫
         */

        {
            put(YIN_ZHI, 8);  // 寅：马在艮八宫
            put(SHEN_ZHI, 2); // 申：马在坤二宫
            put(SI_ZHI, 4);   // 巳：马在巽四宫
            put(HAI_ZHI, 6);  // 亥：马在乾六宫
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 十干克应
     */
    public static final Map<List<String>, List<String>> SHI_GAN_KE_YING = new HashMap<List<String>, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            十干克应：天盘天干和地盘天干相遇后的各种克应关系。

                1、奇门遁甲将甲隐遁起来，其余九干又分成三奇和六仪，所以也就是奇仪之间的克应关系；
                2、即天盘[乙、丙、丁、戊、己、庚、辛、壬、癸]和地盘[乙、丙、丁、戊、己、庚、辛、壬、癸]相遇后的各种关系。
        */

        {
            // 例如→ 天盘乙奇+地盘乙奇（日奇伏吟）：宜安分守已、积粮藏宝、莳花种果等；不宜见上层领导、贵人、求名求利等。
            put(Arrays.asList(YI_GAN, YI_GAN), Arrays.asList("日奇伏吟", "宜安分守已、积粮藏宝、莳花种果等；不宜见上层领导、贵人、求名求利等。"));
            put(Arrays.asList(YI_GAN, BING_GAN), Arrays.asList("奇仪顺遂", "吉星迁官晋职，凶星夫妻反目离别。"));
            put(Arrays.asList(YI_GAN, DING_GAN), Arrays.asList("奇仪相佐", "最利文书、考试，百事可为。"));
            put(Arrays.asList(YI_GAN, WU_GAN), Arrays.asList("阴害阳门", "利于阴人、阴事，不利阳人、阳事，得门吉尚可谋为，得门凶、门迫则破财伤人。"));
            put(Arrays.asList(YI_GAN, JI_GAN), Arrays.asList("日奇入墓", "门凶事必凶，得生、开二吉门为地遁。"));
            put(Arrays.asList(YI_GAN, GENG_GAN), Arrays.asList("日奇被刑", "为争讼财产，夫妻怀有私意。"));
            put(Arrays.asList(YI_GAN, XIN_GAN), Arrays.asList("青龙逃走", "此时不宜举兵，主将士逃窜，临阵败亡，所谋百事皆凶，财利倾覆，身遭残毁；通常代表君子主动离开恶劣环境、人才流失、人才出走、君子遭遇困境、险境而主动逃离等。测婚一般主女方先提出离婚。"));
            put(Arrays.asList(YI_GAN, REN_GAN), Arrays.asList("日奇入地", "尊卑悖乱，官讼是非，有人谋害之事。"));
            put(Arrays.asList(YI_GAN, GUI_GAN), Arrays.asList("华盖逢星", "遁迹修道，隐匿藏形，躲灾避难为吉。"));

            put(Arrays.asList(BING_GAN, YI_GAN), Arrays.asList("日月并行", "公谋私为皆吉。"));
            put(Arrays.asList(BING_GAN, BING_GAN), Arrays.asList("月奇悖师", "文书逼迫，破耗遗失，主单据票证不明遗失。"));
            put(Arrays.asList(BING_GAN, DING_GAN), Arrays.asList("星奇朱雀", "贵人文书吉利，常人平静安乐，得三吉门为天遁。"));
            put(Arrays.asList(BING_GAN, WU_GAN), Arrays.asList("飞鸟跌穴", "百事吉，事业可为，可谋大事。"));
            put(Arrays.asList(BING_GAN, JI_GAN), Arrays.asList("大悖入刑", "坐监牢，被杖责，文书公文不能传递，得吉门则吉，得凶门则转吉为凶。"));
            put(Arrays.asList(BING_GAN, GENG_GAN), Arrays.asList("萤入太白/火入金乡", "门户破败，盗贼耗失，事业亦凶；火入金乡贼即去。"));
            put(Arrays.asList(BING_GAN, XIN_GAN), Arrays.asList("丙辛相和", "故谋事能成，为疾病人不凶。"));
            put(Arrays.asList(BING_GAN, REN_GAN), Arrays.asList("火入天罗", "为客不利，是非颇多。"));
            put(Arrays.asList(BING_GAN, GUI_GAN), Arrays.asList("华盖悖师", "阴人害事，灾祸频生。"));

            put(Arrays.asList(DING_GAN, YI_GAN), Arrays.asList("人遁吉格", "贵人加官晋爵，常人婚姻财帛有喜。"));
            put(Arrays.asList(DING_GAN, BING_GAN), Arrays.asList("星随月转", "贵人越级高升，常人乐极生悲；需忍耐，否则会因小失大而不幸。"));
            put(Arrays.asList(DING_GAN, DING_GAN), Arrays.asList("星奇入太阴", "文书证件即至，喜事从心，万事如意。"));
            put(Arrays.asList(DING_GAN, WU_GAN), Arrays.asList("青龙转光", "官人升迁，常人威昌。"));
            put(Arrays.asList(DING_GAN, JI_GAN), Arrays.asList("火入勾陈", "奸私仇怨，事因女人。"));
            put(Arrays.asList(DING_GAN, GENG_GAN), Arrays.asList("文书阻隔", "行人必归。"));
            put(Arrays.asList(DING_GAN, XIN_GAN), Arrays.asList("朱雀入狱", "罪人释囚，官人失位。"));
            put(Arrays.asList(DING_GAN, REN_GAN), Arrays.asList("丁壬相合", "主贵人恩诏，讼狱公平，测婚多为苟合。"));
            put(Arrays.asList(DING_GAN, GUI_GAN), Arrays.asList("朱雀投江", "文书口舌是非，惊动官府，词讼不利，音信沉溺不到。"));

            put(Arrays.asList(WU_GAN, YI_GAN), Arrays.asList("甲乙会和", "又名青龙会和，门吉事吉，门凶事凶。"));
            put(Arrays.asList(WU_GAN, BING_GAN), Arrays.asList("青龙返首", "为事所谋，大吉大利，若逢迫墓击邢，吉事也凶。"));
            put(Arrays.asList(WU_GAN, DING_GAN), Arrays.asList("青龙耀明", "谒贵求名吉利，若值墓、迫，惹是生非。"));
            put(Arrays.asList(WU_GAN, WU_GAN), Arrays.asList("甲甲比肩", "各谓伏吟，凡事不利，道路闭塞，以守为好。"));
            put(Arrays.asList(WU_GAN, JI_GAN), Arrays.asList("贵人入狱", "公司皆不利。"));
            put(Arrays.asList(WU_GAN, GENG_GAN), Arrays.asList("值符飞宫", "吉事不吉，凶事更凶，求财没利益，测病也主凶，同时甲庚相冲，也主换地方。"));
            put(Arrays.asList(WU_GAN, XIN_GAN), Arrays.asList("青龙折足", "子午相冲，吉门有生助，尚能谋事，若逢凶门，则招灾、失财或有足疾、折伤。"));
            put(Arrays.asList(WU_GAN, REN_GAN), Arrays.asList("青龙入天牢", "凡阴阳事皆不吉利。"));
            put(Arrays.asList(WU_GAN, GUI_GAN), Arrays.asList("青龙华盖", "甲为青龙，癸为天网，逢吉门为吉，可招福临门，逢凶门事多不利，为凶。"));

            put(Arrays.asList(JI_GAN, YI_GAN), Arrays.asList("墓神不明", "地户逢星，宜遁迹隐形为吉利。"));
            put(Arrays.asList(JI_GAN, BING_GAN), Arrays.asList("火悖地户", "男人冤冤相害，女人必致淫污。"));
            put(Arrays.asList(JI_GAN, DING_GAN), Arrays.asList("朱雀入墓", "文书词讼，先曲后直。"));
            put(Arrays.asList(JI_GAN, WU_GAN), Arrays.asList("犬遇青龙", "门吉为谋望遂意，上人见喜，若门凶，枉费心机。"));
            put(Arrays.asList(JI_GAN, JI_GAN), Arrays.asList("地户逢贵", "病者发凶或必死，百事不遂，暂不谋为，谋为则凶。"));
            put(Arrays.asList(JI_GAN, GENG_GAN), Arrays.asList("刑格返名", "词讼先动者不利，如临阴星则有谋害之情。"));
            put(Arrays.asList(JI_GAN, XIN_GAN), Arrays.asList("游魂入墓", "易遭阴邪鬼魅作祟。"));
            put(Arrays.asList(JI_GAN, REN_GAN), Arrays.asList("地网高张", "狡童佚女，奸情伤杀，凶。"));
            put(Arrays.asList(JI_GAN, GUI_GAN), Arrays.asList("地刑玄武", "男女疾病垂危，有囚狱词讼之灾。"));

            put(Arrays.asList(GENG_GAN, YI_GAN), Arrays.asList("太白逢星", "退吉进凶，谋为不利。"));
            put(Arrays.asList(GENG_GAN, BING_GAN), Arrays.asList("太白入萤", "占贼贼必来，须防贼来偷营。宜于西北方伏击之。以固守为吉。为客进利，为主破财。"));
            put(Arrays.asList(GENG_GAN, DING_GAN), Arrays.asList("亭亭之格", "因私匿或男女关系起官司是非，门吉有救，门凶事必凶。"));
            put(Arrays.asList(GENG_GAN, WU_GAN), Arrays.asList("天乙伏宫", "百事不可谋，大凶。"));
            put(Arrays.asList(GENG_GAN, JI_GAN), Arrays.asList("官符刑格", "主有官司口舌，因官讼被判刑，住牢狱更凶。"));
            put(Arrays.asList(GENG_GAN, GENG_GAN), Arrays.asList("太白同宫", "又名战格，官灾横祸，兄弟或同辈朋友相冲撞，不利为事。"));
            put(Arrays.asList(GENG_GAN, XIN_GAN), Arrays.asList("白虎干格", "不宜远行，远行车折马伤，求财更为大凶。"));
            put(Arrays.asList(GENG_GAN, REN_GAN), Arrays.asList("上格", "远行道路迷失，男女音信难通。"));
            put(Arrays.asList(GENG_GAN, GUI_GAN), Arrays.asList("大格", "多主车祸，行人不至，官事不止，生育母子俱伤，大凶。"));

            put(Arrays.asList(XIN_GAN, YI_GAN), Arrays.asList("白虎猖狂", "家败人亡，远行多遭殃；测婚离散，主因男人。"));
            put(Arrays.asList(XIN_GAN, BING_GAN), Arrays.asList("干合悖师", "门吉则事吉，门凶事凶，测事易因财物致讼。"));
            put(Arrays.asList(XIN_GAN, DING_GAN), Arrays.asList("狱神得奇", "经商求财获利百倍，囚人逢天赦释免。"));
            put(Arrays.asList(XIN_GAN, WU_GAN), Arrays.asList("困龙被伤", "主官司破财，屈抑守分尚可，妄动则带来灾祸。"));
            put(Arrays.asList(XIN_GAN, JI_GAN), Arrays.asList("入狱自刑", "奴仆背主，有苦诉讼难伸。"));
            put(Arrays.asList(XIN_GAN, GENG_GAN), Arrays.asList("白虎出力", "刀刃相交，主客相残，逊让退步稍可，强进血溅衣衫。"));
            put(Arrays.asList(XIN_GAN, XIN_GAN), Arrays.asList("午午自刑", "伏吟天庭，公废私就，讼狱自罹罪名。"));
            put(Arrays.asList(XIN_GAN, REN_GAN), Arrays.asList("凶蛇入狱", "两男争女，讼狱不息，先动失理。"));
            put(Arrays.asList(XIN_GAN, GUI_GAN), Arrays.asList("天牢华盖", "日月失明，误入天网，动止乖张。"));

            put(Arrays.asList(REN_GAN, YI_GAN), Arrays.asList("小蛇得势", "女人柔顺，男人通达，测孕育生子，禄马光荣。"));
            put(Arrays.asList(REN_GAN, BING_GAN), Arrays.asList("水蛇入火", "主官灾刑禁，络绎不绝。"));
            put(Arrays.asList(REN_GAN, DING_GAN), Arrays.asList("干合蛇刑", "文书牵连，贵人匆匆，男吉女凶。"));
            put(Arrays.asList(REN_GAN, WU_GAN), Arrays.asList("小蛇化龙", "男人发达，女人产婴童。"));
            put(Arrays.asList(REN_GAN, JI_GAN), Arrays.asList("反吟蛇刑", "主官讼败诉，大祸将至，顺守可吉，妄动必灾。"));
            put(Arrays.asList(REN_GAN, GENG_GAN), Arrays.asList("太白擒蛇", "刑狱公平，立部刑正。"));
            put(Arrays.asList(REN_GAN, XIN_GAN), Arrays.asList("腾蛇相缠", "纵得吉门，亦不能安宁，若有谋望，被人欺瞒。"));
            put(Arrays.asList(REN_GAN, REN_GAN), Arrays.asList("蛇入地罗", "外人缠绕，内事索索，吉门吉星，庶免蹉跎。"));
            put(Arrays.asList(REN_GAN, GUI_GAN), Arrays.asList("幼女奸淫", "主有家丑外扬之事发生，门吉星凶，易反福为祸。"));

            put(Arrays.asList(GUI_GAN, YI_GAN), Arrays.asList("华盖逢星", "贵人禄位，常人平安，门吉则吉，门凶则凶。"));
            put(Arrays.asList(GUI_GAN, BING_GAN), Arrays.asList("华盖悖师", "贵贱逢之皆不利，惟上人见喜。"));
            put(Arrays.asList(GUI_GAN, DING_GAN), Arrays.asList("螣蛇夭矫", "文书官司，火焚也难逃。"));
            put(Arrays.asList(GUI_GAN, WU_GAN), Arrays.asList("天乙会和", "吉门易求财，婚姻喜美，吉人赞助成合；门凶迫制，反祸官非。"));
            put(Arrays.asList(GUI_GAN, JI_GAN), Arrays.asList("华盖地户", "男女测之，音信皆阻，此格宜躲灾避难方为吉。"));
            put(Arrays.asList(GUI_GAN, GENG_GAN), Arrays.asList("太白入网", "主以暴力争讼，自罹罪责。"));
            put(Arrays.asList(GUI_GAN, XIN_GAN), Arrays.asList("网盖天牢", "主官司败讼，死罪难逃，测病亦大凶。"));
            put(Arrays.asList(GUI_GAN, REN_GAN), Arrays.asList("复见螣蛇", "主嫁娶重婚，后嫁无子，不保年华。"));
            put(Arrays.asList(GUI_GAN, GUI_GAN), Arrays.asList("天网四张", "主行人失伴，病讼皆伤。"));
        }

    };

    /**
     * 八门克应
     */
    public static final Map<List<String>, String> BA_MEN_KE_YING = new HashMap<List<String>, String>() {
        private static final long serialVersionUID = -1;

        /*
            八门克应：人盘八门与地盘八门、地盘奇仪、天盘奇仪的生克制化关系。

                1、休门：休门最好娶资财，牛马猪羊自送来。外口婚姻南方应，迁宫进职坐京台。定进羽音入产业，居家安庆永无灾。
                2、生门：生门临着土星辰，人旺畜孳每称情。子丑年中三七月，黄衣捧笏到门庭。蚕丝谷帛皆丰足，朱紫儿孙守帝廷。南方商音田土地，子孙禄位至公卿。
                3、伤门：疮疼行不得，折损血财身。天灾人枉死，经年有病人。商音难得好，余事不堪闻。
                4、杜门：杜门原是木，犯者灾祸频。亥卯未年月，遭官入狱屯。生离并死别，六畜逐时瘟。落树生脓血，祸害及子孙。
                5、景门：景门主血光，官符卖田庄。祸灾应多有，子孙受苦殃。外亡并恶死，六畜也见伤。生离与死别，用者须提防。
                6、死门：死门之方最为凶，修造逢之祸必侵。犯者年年财产退，更防孝服死人丁。
                7、惊门：惊门不可论，瘟疫死人丁。辰年并酉月，非祸入门庭。
                8、开门：开门欲腹照临来，奴婢牛羊百日回。财宝进时地户入，兴隆宅舍有资财。田园招得商音送，巳酉丑年绝户来。印信子孙多拜受，经衣金带拜荣回。
         */

        {
            // 例如→ 休门+休门：求财、进人口、谒贵吉，朝见、上官、修造亦大利。
            put(Arrays.asList(XIU_MEN, XIU_MEN), "求财、进人口、谒贵吉，朝见、上官、修造亦大利。");
            put(Arrays.asList(XIU_MEN, SHENG_MEN), "主得阴人财物。干贵谋望，虽迟应吉。");
            put(Arrays.asList(XIU_MEN, SHANG_MEN), "主上官、吉庆，求财不得。有亲故分产。变动事不吉。");
            put(Arrays.asList(XIU_MEN, DU_MEN), "主破财，失物难寻。");
            put(Arrays.asList(XIU_MEN, JING_MEN_1), "主求望文书印信事不至，反招口舌小凶。");
            put(Arrays.asList(XIU_MEN, SI_MEN), "主求文书印信官司事，或僧道，远行事，不吉，占病凶。");
            put(Arrays.asList(XIU_MEN, JING_MEN_2), "主损财、招非并疾病、惊恐事。");
            put(Arrays.asList(XIU_MEN, KAI_MEN), "主开张店肆及见贵、求财、喜庆事，大吉。");
            put(Arrays.asList(XIU_MEN, YI_GAN), "求谋重，不得；求轻，可得。");
            put(Arrays.asList(XIU_MEN, BING_GAN), "文书和合喜庆。");
            put(Arrays.asList(XIU_MEN, DING_GAN), "百讼休歇。");
            put(Arrays.asList(XIU_MEN, WU_GAN), "财物和合。");
            put(Arrays.asList(XIU_MEN, JI_GAN), "暗昧不宁。");
            put(Arrays.asList(XIU_MEN, GENG_GAN), "文书词讼先结后解。");
            put(Arrays.asList(XIU_MEN, XIN_GAN), "疾病退愈，失物不得。");
            put(Arrays.asList(XIU_MEN, REN_GAN), "阴人词讼牵连。");
            put(Arrays.asList(XIU_MEN, GUI_GAN), "阴人词讼牵连。");
            put(Arrays.asList(SHENG_MEN, XIU_MEN), "主阴人处求望财利，吉。");
            put(Arrays.asList(SHENG_MEN, SHENG_MEN), "主远行、求财吉。");
            put(Arrays.asList(SHENG_MEN, SHANG_MEN), "主亲友变动，道路不吉。");
            put(Arrays.asList(SHENG_MEN, DU_MEN), "主阴谋，阴人破财，不利。");
            put(Arrays.asList(SHENG_MEN, JING_MEN_1), "主阴人、小口不宁及文书事后吉。");
            put(Arrays.asList(SHENG_MEN, SI_MEN), "主田宅官司，病主难救。");
            put(Arrays.asList(SHENG_MEN, JING_MEN_2), "主尊长财产、词讼，病迟愈，吉。");
            put(Arrays.asList(SHENG_MEN, KAI_MEN), "主见贵人，求财大发。");
            put(Arrays.asList(SHENG_MEN, YI_GAN), "主阴人生产迟吉。");
            put(Arrays.asList(SHENG_MEN, BING_GAN), "主贵人印绶、婚姻、书信喜事。");
            put(Arrays.asList(SHENG_MEN, DING_GAN), "主词讼、婚姻、财利大吉。");
            put(Arrays.asList(SHENG_MEN, WU_GAN), "嫁娶、求财、谒贵皆吉。");
            put(Arrays.asList(SHENG_MEN, JI_GAN), "主得贵人维持吉。");
            put(Arrays.asList(SHENG_MEN, GENG_GAN), "主财产争讼破产，不利。");
            put(Arrays.asList(SHENG_MEN, XIN_GAN), "主官事、产妇疾病，后吉。");
            put(Arrays.asList(SHENG_MEN, REN_GAN), "主遗失财产后得，盗贼易获。");
            put(Arrays.asList(SHENG_MEN, GUI_GAN), "主婚姻不成，余事皆吉。");
            put(Arrays.asList(SHANG_MEN, XIU_MEN), "主男人变动或托人办事，财名不利。");
            put(Arrays.asList(SHANG_MEN, SHENG_MEN), "主房产、种植事业，凶。");
            put(Arrays.asList(SHANG_MEN, SHANG_MEN), "主变动、远得折伤，凶。");
            put(Arrays.asList(SHANG_MEN, DU_MEN), "主变动、失脱、官司桎梏，百事皆凶。");
            put(Arrays.asList(SHANG_MEN, JING_MEN_1), "主文书印信、口舌，惹是生非。");
            put(Arrays.asList(SHANG_MEN, SI_MEN), "主官司印信凶，出行大忌，点病凶。");
            put(Arrays.asList(SHANG_MEN, JING_MEN_2), "主亲人疾病忧惧，媒伐不利，凶。");
            put(Arrays.asList(SHANG_MEN, KAI_MEN), "主贵人开张有走失变动之事，不利。");
            put(Arrays.asList(SHANG_MEN, YI_GAN), "主求谋不得，反防盗失财。");
            put(Arrays.asList(SHANG_MEN, BING_GAN), "主道路损失。");
            put(Arrays.asList(SHANG_MEN, DING_GAN), "主音信不实。");
            put(Arrays.asList(SHANG_MEN, WU_GAN), "主失脱难获。");
            put(Arrays.asList(SHANG_MEN, JI_GAN), "主财散人亡。");
            put(Arrays.asList(SHANG_MEN, GENG_GAN), "主讼狱被刑杖，凶。");
            put(Arrays.asList(SHANG_MEN, XIN_GAN), "主夫妻怀私恣怨。");
            put(Arrays.asList(SHANG_MEN, REN_GAN), "主因盗牵连。");
            put(Arrays.asList(SHANG_MEN, GUI_GAN), "讼狱被冤，有理难伸。");
            put(Arrays.asList(DU_MEN, XIU_MEN), "主求财有益。");
            put(Arrays.asList(DU_MEN, SHENG_MEN), "主阳人小口破财及田宅，求财不利。");
            put(Arrays.asList(DU_MEN, SHANG_MEN), "主兄弟相争田产，破财不利。");
            put(Arrays.asList(DU_MEN, DU_MEN), "主因父母疾病，田宅出脱事，凶。");
            put(Arrays.asList(DU_MEN, JING_MEN_1), "主文书印信阻隔，阳人小口疾病，迟疑不利。");
            put(Arrays.asList(DU_MEN, SI_MEN), "主田宅文书失落，官司破财，小凶。");
            put(Arrays.asList(DU_MEN, JING_MEN_2), "主门户内忧疑惊恐，并有词讼事。");
            put(Arrays.asList(DU_MEN, KAI_MEN), "主见贵人官长，谋事主先破己财，后吉。");
            put(Arrays.asList(DU_MEN, YI_GAN), "主宜暗求阳人财物，得主不明至讼。");
            put(Arrays.asList(DU_MEN, BING_GAN), "主文契遗失。");
            put(Arrays.asList(DU_MEN, DING_GAN), "主男人入狱。");
            put(Arrays.asList(DU_MEN, WU_GAN), "主谋事不成，密处求财得。");
            put(Arrays.asList(DU_MEN, JI_GAN), "主私害人招非。");
            put(Arrays.asList(DU_MEN, GENG_GAN), "主因女人讼狱被刑。");
            put(Arrays.asList(DU_MEN, XIN_GAN), "主打伤人，词讼阳人小口凶。");
            put(Arrays.asList(DU_MEN, REN_GAN), "主奸盗事，凶。");
            put(Arrays.asList(DU_MEN, GUI_GAN), "主百事皆阻，病者不食。");
            put(Arrays.asList(JING_MEN_1, XIU_MEN), "主文书遗失，争讼不休。");
            put(Arrays.asList(JING_MEN_1, SHENG_MEN), "主阴人生产大喜，更主求财旺利，行人皆吉。");
            put(Arrays.asList(JING_MEN_1, SHANG_MEN), "主姻亲小口口舌。");
            put(Arrays.asList(JING_MEN_1, DU_MEN), "主失脱文书，散财后平。");
            put(Arrays.asList(JING_MEN_1, JING_MEN_1), "主文状未动有预先见之意，内有小口忧患。");
            put(Arrays.asList(JING_MEN_1, SI_MEN), "主官讼，因田宅事争竞，惹麻烦。");
            put(Arrays.asList(JING_MEN_1, JING_MEN_2), "主官讼，女人小口疾病，凶。");
            put(Arrays.asList(JING_MEN_1, KAI_MEN), "主官人升迁，吉；求文印更吉。");
            put(Arrays.asList(JING_MEN_1, YI_GAN), "主讼事不成。");
            put(Arrays.asList(JING_MEN_1, BING_GAN), "主文书急迫火速不利。");
            put(Arrays.asList(JING_MEN_1, DING_GAN), "主因文书印状招非。");
            put(Arrays.asList(JING_MEN_1, WU_GAN), "主因财产词讼。远行吉。");
            put(Arrays.asList(JING_MEN_1, JI_GAN), "主官事牵连。");
            put(Arrays.asList(JING_MEN_1, GENG_GAN), "主讼人自讼。");
            put(Arrays.asList(JING_MEN_1, XIN_GAN), "主阴人词讼。");
            put(Arrays.asList(JING_MEN_1, REN_GAN), "主因贼牵连。");
            put(Arrays.asList(JING_MEN_1, GUI_GAN), "主因奴婢刑。");
            put(Arrays.asList(SI_MEN, XIU_MEN), "主求财物事不吉，若问生道求方吉。");
            put(Arrays.asList(SI_MEN, SHENG_MEN), "主丧事，求财得，占病死者复生。");
            put(Arrays.asList(SI_MEN, SHANG_MEN), "主官事动而被刑杖，凶。");
            put(Arrays.asList(SI_MEN, DU_MEN), "主破财，妇人风疾，凶。");
            put(Arrays.asList(SI_MEN, JING_MEN_1), "主因文契印信财产事见官，先怒后喜，不凶。");
            put(Arrays.asList(SI_MEN, SI_MEN), "主官而留，印信无气，凶。");
            put(Arrays.asList(SI_MEN, JING_MEN_2), "主因官司不给，忧疑患病，凶。");
            put(Arrays.asList(SI_MEN, KAI_MEN), "主见贵人，求印信文书事大利。");
            put(Arrays.asList(SI_MEN, YI_GAN), "主求事不成。");
            put(Arrays.asList(SI_MEN, BING_GAN), "主信息忧疑。");
            put(Arrays.asList(SI_MEN, DING_GAN), "主老阳人疾病。");
            put(Arrays.asList(SI_MEN, WU_GAN), "主作伪财。");
            put(Arrays.asList(SI_MEN, JI_GAN), "主病讼牵连不已，凶。");
            put(Arrays.asList(SI_MEN, GENG_GAN), "主女人生产，母子俱凶。");
            put(Arrays.asList(SI_MEN, XIN_GAN), "主盗贼失脱难获。");
            put(Arrays.asList(SI_MEN, REN_GAN), "主讼人自讼自招。");
            put(Arrays.asList(SI_MEN, GUI_GAN), "主妇女嫁娶事凶。");
            put(Arrays.asList(JING_MEN_2, XIU_MEN), "主求财事或因口舌求财事，迟吉。");
            put(Arrays.asList(JING_MEN_2, SHENG_MEN), "主因妇人生忧惊，或因求财生忧惊，皆吉。");
            put(Arrays.asList(JING_MEN_2, SHANG_MEN), "主因商议同谋害人，事泄惹讼，凶。");
            put(Arrays.asList(JING_MEN_2, DU_MEN), "主因失脱破财惊恐，不凶。");
            put(Arrays.asList(JING_MEN_2, JING_MEN_1), "主词讼不息，小口疾病，凶。");
            put(Arrays.asList(JING_MEN_2, SI_MEN), "主因宅中怪异而生是非，凶。");
            put(Arrays.asList(JING_MEN_2, JING_MEN_2), "主疾病、忧疑、惊疑。");
            put(Arrays.asList(JING_MEN_2, KAI_MEN), "主忧疑、官司、惊恐；能见贵人，不凶。");
            put(Arrays.asList(JING_MEN_2, YI_GAN), "主谋财不得。");
            put(Arrays.asList(JING_MEN_2, BING_GAN), "主文书印信惊恐。");
            put(Arrays.asList(JING_MEN_2, DING_GAN), "主词讼牵连。");
            put(Arrays.asList(JING_MEN_2, WU_GAN), "主损财，信阻。");
            put(Arrays.asList(JING_MEN_2, JI_GAN), "主恶犬伤人成讼。");
            put(Arrays.asList(JING_MEN_2, GENG_GAN), "主道路损折、遇贼盗，凶。");
            put(Arrays.asList(JING_MEN_2, XIN_GAN), "主女人成讼，凶。");
            put(Arrays.asList(JING_MEN_2, REN_GAN), "主官司因禁，病者大凶。");
            put(Arrays.asList(JING_MEN_2, GUI_GAN), "主被盗，失物难获。");
            put(Arrays.asList(KAI_MEN, XIU_MEN), "主见贵人财喜及开张铺店，贸易大吉。");
            put(Arrays.asList(KAI_MEN, SHENG_MEN), "主见贵人，谋望所求遂意。");
            put(Arrays.asList(KAI_MEN, SHANG_MEN), "主变动、更改、移徙，事皆不吉。");
            put(Arrays.asList(KAI_MEN, DU_MEN), "主失脱，刊印书契小凶。");
            put(Arrays.asList(KAI_MEN, JING_MEN_1), "主见贵人，因文书事不利。");
            put(Arrays.asList(KAI_MEN, SI_MEN), "主官司惊忧，先忧后喜。");
            put(Arrays.asList(KAI_MEN, JING_MEN_2), "主百事不利。");
            put(Arrays.asList(KAI_MEN, KAI_MEN), "主贵人定物财喜。");
            put(Arrays.asList(KAI_MEN, YI_GAN), "小财可求。");
            put(Arrays.asList(KAI_MEN, BING_GAN), "贵人印绶。");
            put(Arrays.asList(KAI_MEN, DING_GAN), "远信心至。");
            put(Arrays.asList(KAI_MEN, WU_GAN), "财名俱得。");
            put(Arrays.asList(KAI_MEN, JI_GAN), "事绪不定。");
            put(Arrays.asList(KAI_MEN, GENG_GAN), "道路词讼，谋为两歧。");
            put(Arrays.asList(KAI_MEN, XIN_GAN), "阴人道路。");
            put(Arrays.asList(KAI_MEN, REN_GAN), "远得有失。");
            put(Arrays.asList(KAI_MEN, GUI_GAN), "阴人人财小凶。");
        }

    };

    /**
     * 八门克应之静应
     */
    public static final Map<List<String>, String> BA_MEN_JING_YING = new HashMap<List<String>, String>() {
        private static final long serialVersionUID = -1;

        /*
            八门静应：门加门、门加三奇六仪所形成的格局及其吉凶，主要用于占事。
        */

        // 请参考八门克应

    };

    /**
     * 八门克应之动应
     */
    public static final Map<List<String>, String> BA_MEN_DONG_YING = new HashMap<List<String>, String>() {
        private static final long serialVersionUID = -1;

        /*
            八门动应：门与门相对时，在出门等路上所遇到的兆应，主要用于择吉。
        */

        {
            put(Arrays.asList(XIU_MEN, XIU_MEN), "一里或十一里，逢青衣夫妻歌唱为应。");
            put(Arrays.asList(XIU_MEN, SHENG_MEN), "八里或十八里，逢妇人下黑土黄土或皂衣公吏人。");
            put(Arrays.asList(XIU_MEN, SHANG_MEN), "三里或十三里，逢匠人拿木棍或皂衣公吏人。");
            put(Arrays.asList(XIU_MEN, DU_MEN), "四里或十四里，逢青衣妇人拉或抱孩童边走边唱。");
            put(Arrays.asList(XIU_MEN, JING_MEN_1), "九里或十九里，逢皂衣公吏人骑骡马或乘车。");
            put(Arrays.asList(XIU_MEN, SI_MEN), "二里或十二里，逢孝服人哭泣，更有绿衣人相伴。");
            put(Arrays.asList(XIU_MEN, JING_MEN_2), "七里或十七里，逢皂衣人打足，妇人拉、抱孩童。");
            put(Arrays.asList(XIU_MEN, KAI_MEN), "六里或十六里，逢人打架叹气，畜物争斗。");
            put(Arrays.asList(SHENG_MEN, XIU_MEN), "一里或十一里，逢皂衣人及打钱人。");
            put(Arrays.asList(SHENG_MEN, SHENG_MEN), "八里或十八里，逢朱衣贵人。");
            put(Arrays.asList(SHENG_MEN, SHANG_MEN), "三里或十三里，逢公吏人持棍，或培土栽树。");
            put(Arrays.asList(SHENG_MEN, DU_MEN), "四里或十四里，逢人拿彩色物品边走边唱并长叹息人。");
            put(Arrays.asList(SHENG_MEN, JING_MEN_1), "九里或十九里，逢贵人车马多人相随。");
            put(Arrays.asList(SHENG_MEN, SI_MEN), "二里或十二里，逢孝服人哭泣。");
            put(Arrays.asList(SHENG_MEN, JING_MEN_2), "七里或十七里，逢人赶畜，及有人讲诉讼事情。");
            put(Arrays.asList(SHENG_MEN, KAI_MEN), "六里或十六里，逢贵车马并有蛇咬猪者。");
            put(Arrays.asList(SHANG_MEN, XIU_MEN), "一里或十一里，逢老妇与少男同行。");
            put(Arrays.asList(SHANG_MEN, SHENG_MEN), "八里或十八里，逢人伐树或培土。");
            put(Arrays.asList(SHANG_MEN, SHANG_MEN), "三里或十三里，逢二车堵塞道路争行。");
            put(Arrays.asList(SHANG_MEN, DU_MEN), "四里或十四里，逢公吏人及木匠伐树，并有妇人抱小儿经过。");
            put(Arrays.asList(SHANG_MEN, JING_MEN_1), "九里或十九里，逢色衣人骑骡马坐车经过。");
            put(Arrays.asList(SHANG_MEN, SI_MEN), "二里或十二里，逢埋葬及孝服人哭泣。");
            put(Arrays.asList(SHANG_MEN, JING_MEN_2), "七里或十七里，逢人争斗及赶牲畜，并有妇人与少女同行。");
            put(Arrays.asList(SHANG_MEN, KAI_MEN), "六里或十六里，逢人拆墙安门解板或二猪相咬。");
            put(Arrays.asList(DU_MEN, XIU_MEN), "一里或十一里，逢唱戏或皂衣人抱孩童。");
            put(Arrays.asList(DU_MEN, SHENG_MEN), "八里或十八里，逢人扛钱或手拿食物并唱歌。");
            put(Arrays.asList(DU_MEN, SHANG_MEN), "三里或十三里，逢木匠拿着木棍。");
            put(Arrays.asList(DU_MEN, DU_MEN), "四里或十四里，逢妇人引孩子童着绿衣。");
            put(Arrays.asList(DU_MEN, JING_MEN_1), "九里或十九里，逢孕妇着色衣或公吏人骑赤马或开、坐红车。");
            put(Arrays.asList(DU_MEN, SI_MEN), "二里或十二里，逢丧服人哭泣。");
            put(Arrays.asList(DU_MEN, JING_MEN_2), "七里或十七里，逢人唱歌、锣声或有人讲公讼事。");
            put(Arrays.asList(DU_MEN, KAI_MEN), "六里或十六里，逢人唱歌及狗咬猪。");
            put(Arrays.asList(JING_MEN_1, XIU_MEN), "一里或十一里，逢女人哭泣，与卖鱼人并行。");
            put(Arrays.asList(JING_MEN_1, SHENG_MEN), "八里或十八里，逢小儿赶牛，人背钱以袋和箱装之。");
            put(Arrays.asList(JING_MEN_1, SHANG_MEN), "三里或十三里，逢色衣女人坐车或乘骡马。");
            put(Arrays.asList(JING_MEN_1, DU_MEN), "四里或十四里，逢老少女领黑衣童孩行。");
            put(Arrays.asList(JING_MEN_1, JING_MEN_1), "九里或十九里，逢人抱文书，更有火光惊恐。");
            put(Arrays.asList(JING_MEN_1, SI_MEN), "二里或十二里，逢霄服人哭泣，色衣人骑马或开、坐车。");
            put(Arrays.asList(JING_MEN_1, JING_MEN_2), "七里或十七里，逢争讼争斗，宜避之。");
            put(Arrays.asList(JING_MEN_1, KAI_MEN), "六里或十六里，逢人成队行走，官人骑马。");
            put(Arrays.asList(SI_MEN, XIU_MEN), "一里或十一里，逢青衣妇人哭泣。");
            put(Arrays.asList(SI_MEN, SHENG_MEN), "八里或十八里，逢孝子拿生物大恸。");
            put(Arrays.asList(SI_MEN, SHANG_MEN), "三里或十三里，逢人抬棺材。");
            put(Arrays.asList(SI_MEN, DU_MEN), "四里或十四里，逢埋葬及纸扎彩色物。");
            put(Arrays.asList(SI_MEN, JING_MEN_1), "九里或十九里，逢重孝人哭泣，退吉进凶。");
            put(Arrays.asList(SI_MEN, SI_MEN), "二里或十二里逢妇人哭泣，凶。");
            put(Arrays.asList(SI_MEN, JING_MEN_2), "七里或十七里，逢丧哭泣或死畜物类。");
            put(Arrays.asList(SI_MEN, KAI_MEN), "六里或十六里，逢开坟、哭泣或是见畜类争斗。");
            put(Arrays.asList(JING_MEN_2, XIU_MEN), "一里或十一里，逢青衣妇人说官司。");
            put(Arrays.asList(JING_MEN_2, SHENG_MEN), "八里或十八里，逢女人引孩童赶牛，小儿拿吃的东西。");
            put(Arrays.asList(JING_MEN_2, SHANG_MEN), "三里或十三里，逢男女吵闹，打孩子，宜退不宜进，若强进有车折马死，凶。");
            put(Arrays.asList(JING_MEN_2, DU_MEN), "四里或十四里，逢僧道同行或男女相商。");
            put(Arrays.asList(JING_MEN_2, JING_MEN_1), "九里或十九里，逢色衣妇人说官司。");
            put(Arrays.asList(JING_MEN_2, SI_MEN), "二里或十二里，逢女人哭泣及丧亡事情。");
            put(Arrays.asList(JING_MEN_2, JING_MEN_2), "七里或十七里，逢二女吵闹，傍人说打官司事。");
            put(Arrays.asList(JING_MEN_2, KAI_MEN), "六里或十六里，逢官吏役人争讼。");
            put(Arrays.asList(KAI_MEN, XIU_MEN), "一里、十一里，逢四足畜物相斗，妇人著皂衣及文人言功名事。");
            put(Arrays.asList(KAI_MEN, SHENG_MEN), "八里、十八里，逢阴人并四足物，或阳人言争产财帛事。");
            put(Arrays.asList(KAI_MEN, SHANG_MEN), "三里、十三里，逢妇人车马，随人弄火。");
            put(Arrays.asList(KAI_MEN, DU_MEN), "四里、十四里，逢阳人急唱，或僧道为应。");
            put(Arrays.asList(KAI_MEN, JING_MEN_1), "九里、十九里，逢贵人骑马坐车，或拿文书为应。");
            put(Arrays.asList(KAI_MEN, SI_MEN), "二里、十二里，逢老人啼哭，或开土埋葬为应。");
            put(Arrays.asList(KAI_MEN, JING_MEN_2), "七里、十七里，逢兄妹同行为应。");
            put(Arrays.asList(KAI_MEN, KAI_MEN), "六里、六十里，见贵人及打斗者为应。");
        }

    };

    /**
     * 星门克应
     */
    public static final Map<List<String>, String> XING_MEN_KE_YING = new HashMap<List<String>, String>() {
        private static final long serialVersionUID = -1;

        /*
            星门克应：星加门形成的格局及其吉凶。
        */

        {
            // 例如→ 天蓬星+休门：披枷戴锁，锒铛入狱；小凶
            put(Arrays.asList(TIAN_PENG, XIU_MEN), "披枷戴锁，锒铛入狱；小凶。");
            put(Arrays.asList(TIAN_PENG, SHENG_MEN), "纵欲无度，尽兴不返；大吉。");
            put(Arrays.asList(TIAN_PENG, SHANG_MEN), "大难临头，六宅不安；小凶。");
            put(Arrays.asList(TIAN_PENG, DU_MEN), "十年寒窗，不得一举；小凶。");
            put(Arrays.asList(TIAN_PENG, JING_MEN_1), "万事具备，只欠东风；小凶。");
            put(Arrays.asList(TIAN_PENG, SI_MEN), "夺戒口食，剥戒身衣；小凶。");
            put(Arrays.asList(TIAN_PENG, JING_MEN_2), "别生枝节，何所取义；小凶。");
            put(Arrays.asList(TIAN_PENG, KAI_MEN), "三年不鸣，一鸣惊人；大吉。");
            put(Arrays.asList(TIAN_REN, XIU_MEN), "因材施教，青出于蓝；大吉。");
            put(Arrays.asList(TIAN_REN, SHENG_MEN), "前山后海，进退两难；小凶。");
            put(Arrays.asList(TIAN_REN, SHANG_MEN), "饥不择食，饮鸩止渴；小凶。");
            put(Arrays.asList(TIAN_REN, DU_MEN), "积劳成疾，病入膏肓；小凶。");
            put(Arrays.asList(TIAN_REN, JING_MEN_1), "衣暖食饱，琼楼玉宇；小吉。");
            put(Arrays.asList(TIAN_REN, SI_MEN), "明目张胆，坐地分赃；大凶。");
            put(Arrays.asList(TIAN_REN, JING_MEN_2), "一无所得，人财两空；小凶。");
            put(Arrays.asList(TIAN_REN, KAI_MEN), "仓斗库实，有备无患；大吉。");
            put(Arrays.asList(TIAN_CHONG, XIU_MEN), "履险如夷，转危为安；大吉。");
            put(Arrays.asList(TIAN_CHONG, SHENG_MEN), "塞翁失马，安之非福；大吉。");
            put(Arrays.asList(TIAN_CHONG, SHANG_MEN), "遍体鳞伤，痛入骨髓；大凶。");
            put(Arrays.asList(TIAN_CHONG, DU_MEN), "墨守成规，不知改变；小凶。");
            put(Arrays.asList(TIAN_CHONG, JING_MEN_1), "车载斗量，指不胜屈；小吉。");
            put(Arrays.asList(TIAN_CHONG, SI_MEN), "刀光剑影，枕戈待旦；小凶。");
            put(Arrays.asList(TIAN_CHONG, JING_MEN_2), "遇人不淑，劳燕分飞；大凶。");
            put(Arrays.asList(TIAN_CHONG, KAI_MEN), "力行不怠，一日千重；大吉。");
            put(Arrays.asList(TIAN_FU, XIU_MEN), "雾消云散，重见光明；大吉。");
            put(Arrays.asList(TIAN_FU, SHENG_MEN), "心心相印，海誓山盟；大吉。");
            put(Arrays.asList(TIAN_FU, SHANG_MEN), "先天不足，后天未补；小凶。");
            put(Arrays.asList(TIAN_FU, DU_MEN), "七颠八倒，自相矛盾；大凶。");
            put(Arrays.asList(TIAN_FU, JING_MEN_1), "春风一度，始乱终弃；小吉。");
            put(Arrays.asList(TIAN_FU, SI_MEN), "花天酒地，玩物丧志；小凶。");
            put(Arrays.asList(TIAN_FU, JING_MEN_2), "天罗地网，插翅难飞；小凶。");
            put(Arrays.asList(TIAN_FU, KAI_MEN), "字无分文，牛衣对泣；小凶。");
            put(Arrays.asList(TIAN_YING, XIU_MEN), "寸进尺退，一事无成；小凶。");
            put(Arrays.asList(TIAN_YING, SHENG_MEN), "游山玩水，走遍天下；大吉。");
            put(Arrays.asList(TIAN_YING, SHANG_MEN), "龙争虎斗，两败俱伤；小凶。");
            put(Arrays.asList(TIAN_YING, DU_MEN), "倚官仗势，作威作福；小凶。");
            put(Arrays.asList(TIAN_YING, JING_MEN_1), "春风一度，始乱终弃；小凶。");
            put(Arrays.asList(TIAN_YING, SI_MEN), "连年征战，劳民伤财；小凶。");
            put(Arrays.asList(TIAN_YING, JING_MEN_2), "目瞪口呆，方寸已乱；小凶。");
            put(Arrays.asList(TIAN_YING, KAI_MEN), "金碧辉煌，前呼后拥；大吉。");
            put(Arrays.asList(TIAN_RUI, XIU_MEN), "一以当千，南争北战；大吉。");
            put(Arrays.asList(TIAN_RUI, SHENG_MEN), "力不从心，望尘莫及；小凶。");
            put(Arrays.asList(TIAN_RUI, SHANG_MEN), "七窃生烟，九世之仇；小凶。");
            put(Arrays.asList(TIAN_RUI, DU_MEN), "安生而食，用钱如水；小凶。");
            put(Arrays.asList(TIAN_RUI, JING_MEN_1), "才情卓越，大智若愚；小吉。");
            put(Arrays.asList(TIAN_RUI, SI_MEN), "日落西山，旦不保夕；大凶。");
            put(Arrays.asList(TIAN_RUI, JING_MEN_2), "风吹草动，一夕数惊；小凶。");
            put(Arrays.asList(TIAN_RUI, KAI_MEN), "堆金积玉，安富尊荣；大吉。");
            put(Arrays.asList(TIAN_ZHU, XIU_MEN), "孤云野鹤，枕流漱石；大吉。");
            put(Arrays.asList(TIAN_ZHU, SHENG_MEN), "怜我怜卿，鸾凤和鸣；大吉。");
            put(Arrays.asList(TIAN_ZHU, SHANG_MEN), "上下其手，一手遮天；大凶。");
            put(Arrays.asList(TIAN_ZHU, DU_MEN), "七颠八倒，自相矛盾；大凶。");
            put(Arrays.asList(TIAN_ZHU, JING_MEN_1), "先著祖鞭，长治久安；小吉。");
            put(Arrays.asList(TIAN_ZHU, SI_MEN), "引狼入室，虎视耽耽；小凶。");
            put(Arrays.asList(TIAN_ZHU, JING_MEN_2), "投机取巧，惟利是图；大凶。");
            put(Arrays.asList(TIAN_ZHU, KAI_MEN), "有勇有谋，果决前进；大吉。");
            put(Arrays.asList(TIAN_XIN, XIU_MEN), "官明如镜，吏清如水；大吉。");
            put(Arrays.asList(TIAN_XIN, SHENG_MEN), "六根清净，山林隐逸；大吉。");
            put(Arrays.asList(TIAN_XIN, SHANG_MEN), "飞来横祸，轩然大波；小凶。");
            put(Arrays.asList(TIAN_XIN, DU_MEN), "山穷水尽，千辛万苦；大凶。");
            put(Arrays.asList(TIAN_XIN, JING_MEN_1), "相见恨晚，握手言欢；小吉。");
            put(Arrays.asList(TIAN_XIN, SI_MEN), "生死有命，回天乏术；小凶。");
            put(Arrays.asList(TIAN_XIN, JING_MEN_2), "千变万化，不可捉摸；小凶。");
            put(Arrays.asList(TIAN_XIN, KAI_MEN), "四海漂泊，何处是家；小凶。");
            put(Arrays.asList(TIAN_QIN, XIU_MEN), "披枷戴锁，锒铛入狱；小凶。");
            put(Arrays.asList(TIAN_QIN, SHENG_MEN), "前山后海，进退两难；小凶。");
            put(Arrays.asList(TIAN_QIN, SHANG_MEN), "遍体鳞伤，痛入骨髓；大凶。");
            put(Arrays.asList(TIAN_QIN, DU_MEN), "七颠八倒，自相矛盾；大凶。");
            put(Arrays.asList(TIAN_QIN, JING_MEN_1), "春风一度，始乱终弃；小凶。");
            put(Arrays.asList(TIAN_QIN, SI_MEN), "日落西山，旦不保夕；大凶。");
            put(Arrays.asList(TIAN_QIN, JING_MEN_2), "投机取巧，惟利是图；大凶。");
            put(Arrays.asList(TIAN_QIN, KAI_MEN), "四海漂泊，何处是家；小凶。");
        }

    };

    /**
     * 九星时应
     */
    public static final Map<List<String>, String> JIU_XING_SHI_YING = new HashMap<List<String>, String>() {
        private static final long serialVersionUID = -1;

        /*
            九星时应：指天盘上的[天蓬、天任、天冲、天辅、天禽、天英、天芮、天柱、天心]九星为值符时，与其所对应的时辰地支之间的生克关系及其吉凶。
        */

        {
            // 例如→ 天蓬星值子时：不利入宅、安坟、上官、下穴，主有口舌争讼。作用之时，有鸡鸣、犬吠、宿鸟闹林，或鸟北方争斗而飞，造葬后主有缺唇人至。至六十日应鸡生肉卵，有官讼至，主退财。
            put(Arrays.asList(TIAN_PENG, ZI_ZHI), "不利入宅、安坟、上官、下穴，主有口舌争讼。作用之时，有鸡鸣、犬吠、宿鸟闹林，或鸟北方争斗而飞，造葬后主有缺唇人至。至六十日应鸡生肉卵，有官讼至，主退财。");
            put(Arrays.asList(TIAN_REN, ZI_ZHI), "主有风雨至，水畔鸡鸣，东南方有持刀人过为应。造葬后百日内，主新妇自离，点水性人上门抵赖，退田产后，出人男盗女娼凶。");
            put(Arrays.asList(TIAN_CHONG, ZI_ZHI), "主有大风雨至。仙禽噪、钟鸣为应。造葬后，六十日有生气物入屋，周年后田蚕倍收，新妇有孕。会因口舌得财。");
            put(Arrays.asList(TIAN_FU, ZI_ZHI), "若为反吟，主西方有人穿红白衣服人前来大叫为应。造葬后，六十日进商音人、物产，野猿猴入屋，宝瓶鸣时，主加官晋禄，生贵子。若门奇到，有十二年大旺。");
            put(Arrays.asList(TIAN_YING, ZI_ZHI), "有锣声自西北至，及三五人拿火伐木为应，造葬后，主有残病人破家业，三年内血光自刎，小儿因汤火伤。");
            put(Arrays.asList(TIAN_RUI, ZI_ZHI), "秋冬用之吉，春夏凶。主有走禽惊，西南火光，二人相逐为应。造葬后，主有猫狗疯癫伤人，惹官非，六十日内有女人自缢事，秋冬作用，当进羽音人、田地及妻女。");
            put(Arrays.asList(TIAN_ZHU, ZI_ZHI), "主有风雨，火从东方起，缺唇人为应，造葬后六十日内主有蛇犬伤人，血光破财。");
            put(Arrays.asList(TIAN_XIN, ZI_ZHI), "主有人争斗。鼓声从西北起为应。造葬后百日内赤面人作牙，进商音人、古器及画轴，家内生白鸡，十二年内田蚕大旺，后因赌博、见讼破财。");
            put(Arrays.asList(TIAN_QIN, ZI_ZHI), "主有怀孕女人来，及紫衣人至为应，造葬后五十日鸡上篱，犬衔花，儒人送物至为应，主因武得官，进田土、财物。二十年后财谷大旺，人丁千口。");

            put(Arrays.asList(TIAN_PENG, CHOU_ZHI), "主树倒伤人。有雷电大作及风雨为应。造葬后七日内，鸡生鹅子卵，犬上主屋，主伤小孩。三年后白头翁作牙，进商音人、田契，大旺财谷，十年后即退败。");
            put(Arrays.asList(TIAN_REN, CHOU_ZHI), "有青衫女人携酒至，四方有鼓声为应。造葬后半年，进无名财物，一年后有鹦鹉入屋，主口舌得财，三年后猫犬相咬，主发科吉。");
            put(Arrays.asList(TIAN_CHONG, CHOU_ZHI), "主云雾四合，以小儿成群来及妇人为应，造葬后黑猫生白子，拾得古镜发财，一年后得僧道、田契、生贵子。");
            put(Arrays.asList(TIAN_FU, CHOU_ZHI), "主东方有几只犬吠，有人持刀杀人斗叫。造葬后，有白兔野鸡入室，六十日内僧道送物，及东南方羽音人送文契至，远信至，一年后添进人口，大旺血财，加官晋禄。");
            put(Arrays.asList(TIAN_YING, CHOU_ZHI), "东北方有师巫人至，及锣声为应。造葬后一月内主火烧屋，一年内狗作人言，百怪俱见，死亡大败。");
            put(Arrays.asList(TIAN_RUI, CHOU_ZHI), "有金鼓声向西北至，造葬后七日，有乌龟自林中出，六十日被盗贼退财，口舌官事至。");
            put(Arrays.asList(TIAN_ZHU, CHOU_ZHI), "北方有匠人携斧至，树木上生金花为应，造葬后六十日进羽音姓人金银器，三年遇大火一贫彻骨，出人捉蛇养狗。");
            put(Arrays.asList(TIAN_XIN, CHOU_ZHI), "主南方有火光, 跛足人送物至，五日内双猫自来为应，作用后，四十日有远方人送物，进商音人财产文契。");
            put(Arrays.asList(TIAN_QIN, CHOU_ZHI), "有孝妇人持锡器来，小儿拍掌笑，吹笛打鼓叫闹为应。造葬后赌博获财，或拾财发富，三年后因获盗贼致富。");

            put(Arrays.asList(TIAN_PENG, YIN_ZHI), "有青衣童子持花来，北方有和尚裹衣至，女人着衫裙至。造葬后有贼劫家财，六十日内有蛇入屋咬人，因马牛死伤人，及鬼打屋，三年后进田地，大旺财谷。");
            put(Arrays.asList(TIAN_REN, YIN_ZHI), "女人成队拿火前行，童子拍手大笑为应，西北有人轿马至。造葬后六十日内，家中老人死。百日内进六畜，女人财宝自至，田蚕大旺后因缺唇人争讼婚事，败。");
            put(Arrays.asList(TIAN_CHONG, YIN_ZHI), "有贵人乘轿（开车）至，及童子执金银器至。造葬后二十日进角音人、契字、及琉璃器物，六十日鸡母啼家，主死。因口舌争讼得财。主乙巳丁年生人发福。");
            put(Arrays.asList(TIAN_FU, YIN_ZHI), "见公吏人手执铁器至，及艺人携物至为应。造葬后六十日内白鼻猫儿咬鸡时，有贼送财宝至，赤面人作牙，进羽音人、田契、二年大发，生贵子。");
            put(Arrays.asList(TIAN_YING, YIN_ZHI), "东方有兵马来，及捕鱼猎网人至。造葬后，女人因行路拾得财宝，六十日内进寡妇田产契书。百日内雷打屋即败。");
            put(Arrays.asList(TIAN_RUI, YIN_ZHI), "有瘦妇怀孕至，更有蓑衣人至。造葬后有奇门旺相，六十日有水牛入屋，大进血财，加官晋禄，子孙大吉。");
            put(Arrays.asList(TIAN_ZHU, YIN_ZHI), "有牛马喧叫，及僧道人持伞至，有大雷雨、喜鹊喧噪为应。造葬后六十日内有贼牵连公事，因公事说讼破财，女人堕胎，难产死。");
            put(Arrays.asList(TIAN_XIN, YIN_ZHI), "有白鹭鸟及水禽至，金鼓四鸣，女人穿青衣携篮至。造葬后火烧伤小口，六十日内由公事至，百日内大进金银，因拾得古窖，三年内因妻得财生贵子。");
            put(Arrays.asList(TIAN_QIN, YIN_ZHI), "金鸡乱鸣，犬吠，有人带深笠至。造葬后六十日进羽音人、契字、田财，人丁大旺。");

            put(Arrays.asList(TIAN_PENG, MAO_ZHI), "黄云四起，妇人拿铁器前来，大蛇横过路。造葬后十日内，徵音人相请，半月内，有徵音人送财物。六十日内，女人因贼害而大破财。百日内，得横财大发。");
            put(Arrays.asList(TIAN_REN, MAO_ZHI), "有老人持杖至，及喜鹊喧噪为应。造葬后七日内，有人进古器物，六十日内，因女人获财宝，进牛羊六畜；因赌博得财，加官进职。");
            put(Arrays.asList(TIAN_CHONG, MAO_ZHI), "有女人穿红色衣送物，及贵人骑马至，两犬相咬，水牛作声。造葬后六十日，进东方人产业，因汤火伤小儿，进财。三年内妇人堕胎，产死。");
            put(Arrays.asList(TIAN_FU, MAO_ZHI), "女人挑伞至，及师巫吹角声，造葬后六十日，大发，添人丁，有生气入屋，旺财谷，因女人公事得财帛、田地契字。");
            put(Arrays.asList(TIAN_YING, MAO_ZHI), "有女人持灯笼来应，或执木棍来应。若见雷鸣应，六十日内，进女人财宝，因而大发。");
            put(Arrays.asList(TIAN_RUI, MAO_ZHI), "有女人穿红色衣送物，及贵人骑马至，两犬相咬，水牛作声。造葬后六十日进东方人产业，因汤火伤小儿，进财。三年内妇人堕胎，产死。");
            put(Arrays.asList(TIAN_ZHU, MAO_ZHI), "有人伐树，及男人持鼓过，黄衣老人持锄至。造葬后六十日内鸡母啼昼鸣，犬上屋。一年内少妇疫病死，凶。");
            put(Arrays.asList(TIAN_XIN, MAO_ZHI), "有跛脚妇人相打及犬吠声，北方有轿车至，造葬七日内进横财，三年后有牛自来，大旺六畜，参军得财，大发。");
            put(Arrays.asList(TIAN_QIN, MAO_ZHI), "大风东起，禽鸟鸣叫，怀孕妇人至，造葬后半年猫儿自来园内，二年得财大发。");

            put(Arrays.asList(TIAN_PENG, CHEN_ZHI), "东北树倒打人，鼓声四起，女人穿红衣至。造葬后，鸟雀四鸣绕屋，被贼盗财。六十日内有病脚人上门抵赖。三年后生贵子，大发财。");
            put(Arrays.asList(TIAN_REN, CHEN_ZHI), "主有白衣男女同行，或孕妇抱小儿为应。造葬后，有人送活物至，大吉。");
            put(Arrays.asList(TIAN_CHONG, CHEN_ZHI), "主有鱼上树，白虎出山，僧道成群至。造葬后四十日内，拾得黄金白银之物，大发横财。七十日内家主的伤折之灾。");
            put(Arrays.asList(TIAN_FU, CHEN_ZHI), "白羊与黄犬相闹，卖油人与卖菜米人相撞，白衣小儿哭，怀孕妇人至。造葬后一年内生贵子，大发财谷。");
            put(Arrays.asList(TIAN_YING, CHEN_ZHI), "西北方大雨至，鸡飞上树，女人持物携篮至。造葬后七日内，有生气入屋，六十日内活物入宅，进横财大发。");
            put(Arrays.asList(TIAN_RUI, CHEN_ZHI), "东方树倒伤人，鼓乐声四起，女人穿红衣至为应。造葬后雀绕屋飞鸣、因贼破财。六十日内有病脚人上门的抵赖。三年后生贵子，大发旺。");
            put(Arrays.asList(TIAN_ZHU, CHEN_ZHI), "有人西方拿金器来。造葬后七日内进阴人财物，寡妇送契至，三年大发。");
            put(Arrays.asList(TIAN_XIN, CHEN_ZHI), "有云从西北起，青衣人携鱼至，女人僧道同行。造葬后，井中气如云出，三日内生贵子，主科第富贵。");
            put(Arrays.asList(TIAN_QIN, CHEN_ZHI), "有师巫术人相争大叫，及东方鸦噪，造葬后六十日内有僧道人及绝户人送物产至。");

            put(Arrays.asList(TIAN_PENG, SI_ZHI), "有驼背老人披蓑衣至，女携酒及师巫人至。造葬后一百日，因火大获横财，一年后，因武获职，加官进禄。");
            put(Arrays.asList(TIAN_REN, SI_ZHI), "有两犬争一物，野人负柴薪过，吏人持伞盖至。造葬后六十日内，获异路人财，南方人送鱼。一年后生贵子，异路显达，进田财。");
            put(Arrays.asList(TIAN_CHONG, SI_ZHI), "有牛相打，羊争行，女人相骂，西南方有鼓声喧闹。造葬后六十日内，蛇咬鸡，牛入室，有女人送契至。一百日后，犬生花子，大旺田财。");
            put(Arrays.asList(TIAN_FU, SI_ZHI), "有人相打，女人抱布来，风四起，小童哭叫。造葬后六十日内，进东方人财物，有鬼神运来大发。");
            put(Arrays.asList(TIAN_YING, SI_ZHI), "主有人抱文书，持伞盖至或抱锡磁器为应，造葬后六十日内，得异姓人财产，南方人送活物来。一年内生贵子发达。");
            put(Arrays.asList(TIAN_RUI, SI_ZHI), "有妇人少女同至为应，造葬后四十日进绝户人田契，一年内因水火发财。");
            put(Arrays.asList(TIAN_ZHU, SI_ZHI), "有黑牛过，钟声鸣，猪上山。造葬后二十日内进商音姓人财物。六十日内家内女人下水，有活物入屋。大发大贵之兆。");
            put(Arrays.asList(TIAN_XIN, SI_ZHI), "有女人穿青衣抱小儿至，紫衣人骑马至，乌龟上树。造葬后半月内，得远方人财物，跛人作牙，进商音产契，六畜兴旺。三年内，女人成家，寡母坐堂。");
            put(Arrays.asList(TIAN_QIN, SI_ZHI), "有白颈鸭（鸟）成队飞鸣，及师巫人相打，贵人骑马过。造葬后七十日有妇人来，生贵子，成家立产。三年后田产大旺。");

            put(Arrays.asList(TIAN_PENG, WU_ZHI), "有人持刀上山，妇人领青衣童子至。造葬后四十日内家主亡。六十日内犬来做人语，入屋为怪。赤面风脚人上门行凶破财，三年后才发旺。");
            put(Arrays.asList(TIAN_REN, WU_ZHI), "西方黄色飞禽来，僧道与儒士同行为应。造葬后四十日进外宝、贵人财物，紫衣人入屋，生贵子。");
            put(Arrays.asList(TIAN_CHONG, WU_ZHI), "东方人家火起，穿白衣前来大唤，山禽噪闹。六十日内拾得古铜器物，大发财产。");
            put(Arrays.asList(TIAN_FU, WU_ZHI), "有僧道持物来，女人穿红衣至，有石火光。造葬后六十日内有贵人至，送异物，进西方人金银。一年内得寡妇人绝户物。");
            put(Arrays.asList(TIAN_YING, WU_ZHI), "南方有人来，穿红衣或骑马持文书至为应，造葬后六十日内被木石伤死，及自缢人命官司败。");
            put(Arrays.asList(TIAN_RUI, WU_ZHI), "主天中有人缺唇，白衣人至，有孕妇过。六十日内有猫鬼咬人，因买卖发横财，一年内得东邻或妻财产大发。");
            put(Arrays.asList(TIAN_ZHU, WU_ZHI), "西方有人骑马至，冬月有雪，夏秋有鸦飞鸣为应。造葬后五日内孕妇先病行丧哭泣。六十日内水边得古铜器，退财小口凶。");
            put(Arrays.asList(TIAN_XIN, WU_ZHI), "主大风雨骤至。蛇横路，女人穿红裙携酒至。造葬后六十日蚕鸣，有跛足人送活物。五年内进金银，大发大旺。");
            put(Arrays.asList(TIAN_QIN, WU_ZHI), "有白衣女人来，狗衔花，山鸡斗叫，风雨从东来。六十日内有犬自外来，或野犬入屋，主进东北方人财，更赌博公事得财，一年后乌鸡生白雏，田蚕大旺。");

            put(Arrays.asList(TIAN_PENG, WEI_ZHI), "童子牵二牛至，白鹭群北方飞来，有女人穿红衣至，造葬后六十日内军贼入屋劫掠财物，凶败。");
            put(Arrays.asList(TIAN_REN, WEI_ZHI), "主有白鸟飞来，飞禽自西南方至，北方大斗闹，鼓声喧天，风雨大至。造葬后七日内，女人送白色衣物或白纸。六十日内家生异白气物，得六畜大旺。");
            put(Arrays.asList(TIAN_CHONG, WEI_ZHI), "有鼓乐响声，小儿穿孝衣至，牛马成群过，西北方有人叫喊声，造葬后六十日内有白羊入屋，六畜大旺。");
            put(Arrays.asList(TIAN_FU, WEI_ZHI), "群犬争吠，丐者携蓑衣至，僧道成群过，西北方有争财，造葬后一百日内，有文书契字，进商音人财物金银。");
            put(Arrays.asList(TIAN_YING, WEI_ZHI), "有孕妇过，及西北方有鼓声为应。造葬后六十日内家主落水淹死，一年后因瘟疫大败。");
            put(Arrays.asList(TIAN_RUI, WEI_ZHI), "有捕猎人至，及白衣道人携茶过。造葬后七日有乌鸦绕屋鸣噪，一年内动瘟疫、火烧屋荡败。");
            put(Arrays.asList(TIAN_ZHU, WEI_ZHI), "有瘦妇与僧道同行东北方，有人携伞骑马过。造葬后一百日内因女人见狐狸猫而败。");
            put(Arrays.asList(TIAN_XIN, WEI_ZHI), "主有艺人法术人拿空器过，白衣人至为应。造葬后，得商音姓人方契，田宅发富。");
            put(Arrays.asList(TIAN_QIN, WEI_ZHI), "有老人及跛足人担花过，或青衣人携物至。造葬后六十日内进羽音人铁器，六畜大旺。");

            put(Arrays.asList(TIAN_PENG, SHEN_ZHI), "有取水人持伞笠至，西方有小儿打水鼓叫喊为应。造葬后三十日内，鸡窝内蛇伤人。一百日内，有新妇自缢，淫欲公事败。");
            put(Arrays.asList(TIAN_REN, SHEN_ZHI), "主大风雨至，人打鼓至，僧道穿黄衣为应。造葬后七日内，女人被火汤烧，凶败。");
            put(Arrays.asList(TIAN_CHONG, SHEN_ZHI), "东方白衣人骑马过，吏卒人持刀相杀，造葬后一百日内，女人人作牙，进绝户田产。");
            put(Arrays.asList(TIAN_FU, SHEN_ZHI), "有青肿患脚人携酒至，三色衣人至，西北金鼓声。造葬后半年内，因妇人财大发，蛇从井中出，外人送牛羊至，得女人财发家。");
            put(Arrays.asList(TIAN_YING, SHEN_ZHI), "有怀孕妇人大哭，西方有金鼓声，及僧道持伞盖，造葬后，七十日内大凶。");
            put(Arrays.asList(TIAN_RUI, SHEN_ZHI), "主东方凉伞青帽，及僧道胡须人至，及牛斗伤人，犬咬人。造葬后一百日当进羽音人产物。一年内有水牛入屋、野鸟入家，家主大病。");
            put(Arrays.asList(TIAN_ZHU, SHEN_ZHI), "主鹰擒禽鸟坠地，及青衣人携篮至。造葬后，三年内因失火丧家，烧屋大败。");
            put(Arrays.asList(TIAN_XIN, SHEN_ZHI), "僧道前来，金鼓四鸣，百鸟交噪，红裙女人送酒至。造葬后寡妇持家，开土得财。");
            put(Arrays.asList(TIAN_QIN, SHEN_ZHI), "主天中飞鸟大叫，师巫将符纸物来。造葬后百日内女人拾得珠翠归。一年后新妇昌盛，生贵子，大旺田产。");

            put(Arrays.asList(TIAN_PENG, YOU_ZHI), "主西方有马至，群鸦飞鸣四噪。造葬后百日内，家生贵子，僧道作牙，进商音人田地，大发。");
            put(Arrays.asList(TIAN_REN, YOU_ZHI), "主僧道尼姑拿火自西南来，北方有钟鼓声为应。造葬后七十日，进牛马，官员财喜，喜信至，大利财丁。");
            put(Arrays.asList(TIAN_CHONG, YOU_ZHI), "远方人送书(现指电子通讯等)至，东方狐狸咬叫，妇人拿火来。造葬后一年，生贵子，得横财大发。");
            put(Arrays.asList(TIAN_FU, YOU_ZHI), "远方人送书至，东方有人叫喊或说狐狸，妇人拿火来。造葬后一年，生贵子，得横财大发。");
            put(Arrays.asList(TIAN_YING, YOU_ZHI), "主西方有人吵闹，鸟雀鸣叫，白衣女人经过为应，造葬后，主小孩女人足疾，百日内因唇舌得财。");
            put(Arrays.asList(TIAN_RUI, YOU_ZHI), "西方有鸟飞过，群鸟飞鸣为应，造葬后百日内僧道作合，进商音人财产，生贵子发旺。");
            put(Arrays.asList(TIAN_ZHU, YOU_ZHI), "主东方有大小车连络数十辆为应，造葬后，七十日内得女人首饰发财。");
            put(Arrays.asList(TIAN_XIN, YOU_ZHI), "主僧道尼姑拿火自西南来，北方有钟鼓声。造葬后七十日内进商音姓人骡马，官员财喜，送远信至，大利。");
            put(Arrays.asList(TIAN_QIN, YOU_ZHI), "主西方起火，人家吵架，鼓声喧闹为应，造葬后，一年生贵子发旺。");

            put(Arrays.asList(TIAN_PENG, XU_ZHI), "主有老人持杖来，西方雷雨至，胡须人担箩来。造葬后，有白狗至。六十日内，因拾得车器，得横财大发。");
            put(Arrays.asList(TIAN_REN, XU_ZHI), "有女人拿布至，西方有鼓声，北方树木伤人为应。造葬后六十日，蛇虫入宅咬人，瘟疫死，大败。若有老人与小孩同来，可解转祸为福。");
            put(Arrays.asList(TIAN_CHONG, XU_ZHI), "西方三五人寻失物，师巫人对走为应。造葬后六十日，鸡上树啼，远方有信，获羽音人财。一年内小口被牛踏伤。");
            put(Arrays.asList(TIAN_FU, XU_ZHI), "西方三五人寻失物，师巫人对走为应。造葬后六十日，鸡上树啼，远方有信，获女人财。一年内小口被牛踏伤。");
            put(Arrays.asList(TIAN_YING, XU_ZHI), "有女人拿瓷瓦器或铁物至。造葬后六十日蛇虫入宅咬人，瘟疫死，大败。");
            put(Arrays.asList(TIAN_RUI, XU_ZHI), "主有老人持杖来，西方雷雨至，胡须人担物来。造葬后有白狗至。六十日内因拾得军器，得横财大发。");
            put(Arrays.asList(TIAN_ZHU, XU_ZHI), "有女人拿白布物至，西方有鼓声，东北方树倒伤人为应。造葬后六十日蛇虫入宅咬人，瘟疫死，大败。");
            put(Arrays.asList(TIAN_XIN, XU_ZHI), "主南方大叫贼惊，小儿骑牛至，造葬后百日内生贵子，金鸡石上鸣，犬吠，二年后中科举。");
            put(Arrays.asList(TIAN_QIN, XU_ZHI), "东北方有钟声及铙钹声，有青衣童子携篮至。造葬后六十日白龟至，得寡妇财物大发；有人中科举。");

            put(Arrays.asList(TIAN_PENG, HAI_ZHI), "主小儿成群，女人穿孝服至。造葬后，因捉贼得财。三年内，出人入道法，卖符咒水起家。");
            put(Arrays.asList(TIAN_REN, HAI_ZHI), "主西方有钟声响声，有人持火叫喧。造葬后，因救火得财，大发。");
            put(Arrays.asList(TIAN_CHONG, HAI_ZHI), "有足跛青衣人至，东方人家有火光。造葬后百日内，猫儿捕白鼠，进商音人田契大发，财得妻财。");
            put(Arrays.asList(TIAN_FU, HAI_ZHI), "有足跛人至，青衣人往东北方去，家人点亮火光。造葬后百日内，猫儿捕白鼠，进商音人田契大发，财得妻财。");
            put(Arrays.asList(TIAN_YING, HAI_ZHI), "女人持火来。造葬后百日内有疯癫人上门耍赖，身死破财。");
            put(Arrays.asList(TIAN_RUI, HAI_ZHI), "主小儿成群，女人穿孝服至。造葬后，因捉贼得财谷。三年后出人入道法，卖符咒水起家。");
            put(Arrays.asList(TIAN_ZHU, HAI_ZHI), "主西方有钟声，山下人持火叫喧。造葬后，因救火得财，大发。");
            put(Arrays.asList(TIAN_XIN, HAI_ZHI), "有鸡鸣狗叫，老人戴皮帽执铁器至。造葬后七日内有不识姓名人上门借宿，遗下财物去。");
            put(Arrays.asList(TIAN_QIN, HAI_ZHI), "西北方有妇人笑声，大风从西起，树倒拆屋，有人大叫。造葬后六十日内进铁匠财物，商音人请吃饭，进僧道财产。");
        }

    };

//------------------------------------------------------------------------------------------------------------------------------------

    /**
     * 月将、月将神
     */
    public static final Map<String, List<String>> YUE_JIANG = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            正月建寅，寅与亥合，所以正月的月将为：亥，月将神为：登明
            二月建卯，卯与戌合，所以二月的月将为：戌，月将神为：河魁
            三月建辰，辰与酉合，所以三月的月将为：酉，月将神为：从魁
            四月建巳，巳与申合，所以四月的月将为：申，月将神为：传送
            五月建午，午与未合，所以五月的月将为：未，月将神为：小吉
            六月建未，未与午合，所以六月的月将为：午，月将神为：胜光
            七月建申，申与巳合，所以七月的月将为：巳，月将神为：太乙
            八月建酉，酉与辰合，所以八月的月将为：辰，月将神为：天罡
            九月建戌，戌与卯合，所以九月的月将为：卯，月将神为：太冲
            十月建亥，亥与寅合，所以十月的月将为：寅，月将神为：功曹
            十一月建子，子与丑合，所以十一月的月将为：丑，月将神为：大吉
            十二月建丑，丑与子合，所以十二月的月将为：子，月将神为：神后
        */

        {
            put(YIN_ZHI, Arrays.asList(HAI_ZHI, CHENG_MING));
            put(MAO_ZHI, Arrays.asList(XU_ZHI, HEI_KUI));
            put(CHEN_ZHI, Arrays.asList(YOU_ZHI, CONG_KUI));
            put(SI_ZHI, Arrays.asList(SHEN_ZHI, CHUAN_SONG));
            put(WU_ZHI, Arrays.asList(WEI_ZHI, XIAO_JI));
            put(WEI_ZHI, Arrays.asList(WU_ZHI, SHENG_GUANG));
            put(SHEN_ZHI, Arrays.asList(SI_ZHI, TAI_YI));
            put(YOU_ZHI, Arrays.asList(CHEN_ZHI, TIAN_GANG));
            put(XU_ZHI, Arrays.asList(MAO_ZHI, TAI_CHONG));
            put(HAI_ZHI, Arrays.asList(YIN_ZHI, GONG_CAO));
            put(ZI_ZHI, Arrays.asList(CHOU_ZHI, DA_JI));
            put(CHOU_ZHI, Arrays.asList(ZI_ZHI, SHEN_HOU));
        }

    };


}
